我正在尝试用一些包含特殊字符的数据填充表单(例如单引号,双引号,<,>,?,",".~,,!@#$%^&*((_+}{":?<<>,./;'[.]等( :
<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;
?>
您需要将"[.]"放入变量中,因为常量将在 '(单引号(上中断。