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

时间:2013-06-17 14:46:13

标签: php string special-characters

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

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

然而,来自MySQL表的$message未正确显示 - 应该在$message中的任何HTML输出都被破坏。

我该如何正确地做到这一点?

4 个答案:

答案 0 :(得分:12)

这样可以防止您的标记被回声破坏:

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

答案 1 :(得分:8)

如果要显示

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

这就是我通常做的事情。

由于答案不同:

htmlentities-vs-htmlspecialchars值得一试。

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

使用常量有什么问题?

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

你需要将'[。]'放入变量中,因为常量会在'(单引号)上中断。