htmlspecialchars转换后,怎么正常输出内容?

问:

htmlspecialchars转义后,怎么正常输出内容?

比如 &符号,被转义为 &amp

答:

使用html_entity_decode  转回来即可。

举例:

把 HTML 实体转换为字符:

<?php
$str = "Bill &amp; &#039;Steve&#039;";
echo html_entity_decode($str, ENT_COMPAT); // 只转换双引号
echo "<br>";
echo html_entity_decode($str, ENT_QUOTES); // 转换双引号和单引号
echo "<br>";
echo html_entity_decode($str, ENT_NOQUOTES); // 不转换任何引号
?>

以上代码的 HTML 输出(查看源代码):

<!DOCTYPE html>
<html>
<body>
Bill & &#039;Steve&#039;<br>
Bill & 'Steve'<br>
Bill & &#039;Steve&#039;
</body>
</html>

以上代码的浏览器输出:

Bill & 'Steve'
Bill & 'Steve'
Bill & 'Steve'

解释:

  • ENT_COMPAT – 默认。仅编码双引号。
  • ENT_QUOTES – 编码双引号和单引号。
  • ENT_NOQUOTES – 不编码任何引号。

弊端:

可能引起xss安全问题,自行选择是否使用和使用位置。


已发布

分类

作者:

标签

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注