2086 次阅读

php中的htmlentities与htmlspecialchars的区别

php官方手册的解释:
htmlentities() 函数把字符转换为 HTML 实体。
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。

下面是作者的理解,如有差错,请您指明。
htmlentities 与 htmlspecialchars 在处理英文字符的时候完全一样,在处理中文字符的时候就有区别啦。
htmlentities 将会对几个特殊字符进行转换,但是遇到中文的时候,如果文件的编码与第三个参数不同就会出现乱码。
而htmlspecialchars 却只可能转换如下几个特殊字符:

& (和号) 成为 &
" (双引号) 成为 "
' (单引号) 成为 '
< (小于) 成为 &lt;
> (大于) 成为 &gt;

因此,对于中文不会出现乱码。请看以下代码对比:

<?php
$str='<a href="test.html">测试页面</a>';
$str1 = htmlentities($str);
echo $str1;   //出现乱码
$str2 = htmlspecialchars($str);
echo $str2;   //显示正常
$str3 = htmlentities($str, ENT_COMPAT, 'utf-8');
echo $str3;   //显示正常
?>

以上文件编码是:utf-8
在大多数情况下,我们都不需要对中文进行处理,所以在转换html代码的时候还是建议使用htmlspecialchars(),这样可以少些两个参数,呵呵!

相关文章

此处评论已关闭

© 2019 MBIOQ Crafted with Typecho. Theme by Junichi
If you find anything I made helpful,I’d love to hear from you!