我应该如何回显包含特殊字符的 PHP 字符串变量


How should I echo a PHP string variable that contains special characters?

我正在尝试用一些包含特殊字符的数据填充表单(例如单引号,双引号,<,>,?,",".~,,!@#$%^&*((_+}{":?<<>,./;'[.]等( :

<input type="text" name="message" size="200" maxlength="200"
 value =<?php echo $message;?>> 

但是,来自 MySQL 表的 $message 无法正确显示 - 任何应该在 $message 中的 HTML 输出都被破坏了。

如何正确执行此操作?

这将防止您的标签被回显破坏:

<?php echo htmlentities($message); ?>

如果要显示它

echo htmlspecialchars($messge, ENT_QUOTES, 'UTF-8');

这就是我通常做的事情。

由于答案是不同的:

htmlentities-vs-htmlspecialchars值得一试。

我通常使用以下代码,请参阅 htmlspecialchars

<?php echo htmlspecialchars($videoId, ENT_QUOTES | ENT_HTML5); ?>

使用常量有什么问题?

<?php
define(foo,'<,>,?,","".~,,!@#$%^&*()_+}{":?<<>,./;');
$foo2="'[.]";
echo constant('foo').$foo2;
?>

您需要将"[.]"放入变量中,因为常量将在 '(单引号(上中断。