我正在尝试使用包含特殊字符的一些数据填充表单(例如单引号,双引号,<,>,?,“,”“。〜,,!@#$%^& *()_ +} {“:?<<>,。/;'[。]等):
<input type="text" name="message" size="200" maxlength="200"
value =<?php echo $message;?>>
然而,来自MySQL表的$message
未正确显示 - 应该在$message
中的任何HTML输出都被破坏。
我该如何正确地做到这一点?
答案 0 :(得分:12)
这样可以防止您的标记被回声破坏:
<?php echo htmlentities($message); ?>
答案 1 :(得分:8)
如果要显示
echo htmlspecialchars($messge, ENT_QUOTES, 'UTF-8');
这就是我通常做的事情。
由于答案不同:
答案 2 :(得分:2)
我通常使用以下代码,请参阅htmlspecialchars
<?php echo htmlspecialchars($videoId, ENT_QUOTES | ENT_HTML5); ?>
答案 3 :(得分:0)
使用常量有什么问题?
<?php
define(foo,'<,>,?,","".~,,!@#$%^&*()_+}{":?<<>,./;');
$foo2="'[.]";
echo constant('foo').$foo2;
?>
你需要将'[。]'放入变量中,因为常量会在'(单引号)上中断。