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); // 不转换任何引号
?>Code language: PHP (php)

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

<!DOCTYPE html>
<html>
<body>
Bill & &#039;Steve&#039;<br>
Bill & 'Steve'<br>
Bill & &#039;Steve&#039;
</body>
</html>
Code language: HTML, XML (xml)

以上代码的浏览器输出:

Bill & 'Steve'
Bill & 'Steve'
Bill & 'Steve'Code language: JavaScript (javascript)

解释:

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

弊端:

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

海拔科技

自媒体人,喜欢网络,热爱研究。本站头条号:星河 熊掌号:海拔科技

相关推荐

ThinkCMF 8 判断中的 eq 和 == 有什么区别?

在 ThinkCMF 8(基于 ThinkPHP)的模板引擎 ThinkTemplate 中,eq 和 == 作用类似,都是用于 判断相等,但它们的使用场景略有不同: 1. eq(标签表达式) eq 是 ThinkTemplate 语法中的 运算符别名,用于模板中 …