-4

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

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

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

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

4

4 回答 4

15

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

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

于 2013-06-17T14:48:38.330 回答
9

如果你想显示它

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

这就是我通常做的。

由于答案不同:

htmlentities-vs-htmlspecialchars值得一试。

于 2013-06-17T14:49:10.233 回答
2

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

<?php echo htmlspecialchars($videoId, ENT_QUOTES | ENT_HTML5); ?>
于 2013-06-17T14:49:50.410 回答
-1

使用常量有什么问题?

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

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

于 2016-10-23T14:45:01.203 回答