带有 ENT_HTML5 的 PHP5.3 htmlentities 会抛出错误消息


PHP5.3 htmlentities with ENT_HTML5 throws error message

我从post表单接收数据并希望将其存储在MySQL中用于处理输入的代码行为:

$tekst = $_POST["tekst"];
$tekst = htmlentities($tekst, ENT_QUOTES, ENT_HTML5, "UTF-8");

当我运行这个时,我收到错误消息:警告:htmlentities():不支持字符集"ENT_HTML5",假设 iso-8859-1 在 savepage.php 在第 14 行索引.php?id=1&ret=1 1

如何克服警告?

您收到该错误是因为您使用了仅在 PHP5.4.0 中出现的标志ENT_HTML5

正如您可以从官方文档中确认的那样:

5.4.0 增加了常量ENT_SUBSTITUTE、ENT_DISALLOWED、ENT_HTML401、ENT_XML1、ENT_XHTML和ENT_HTML5

如果您的唯一目标是克服该错误,那么您可以简单地不设置 htmlentities() 函数的标志。 让 PHP 默认处理它们。

我的意思是,改变这个:

$tekst = htmlentities($tekst, ENT_QUOTES, ENT_HTML5, "UTF-8");

自:

$tekst = htmlentities($tekst, "UTF-8");

另一种选择是设置将它们替换为 PHP5.3.0 支持的其他标志,例如:

  • ENT_COMPAT默认。仅编码双引号

  • ENT_IGNORE忽略无效编码,而不是让函数返回空字符串。应避免,因为它可能具有安全隐患。

相关文章: