PHP htmlentities和htmlspecialchars的区别

时间:2016-06-28
php htmlentities和htmlspecialchars都是将预定义的字符转换为HTML实体,但是这两个函数还是有区别的,本文章通过实例向大家介绍这两个函数的区别及根据不同的情况选择合适的函数,需要的朋友可以参考一下本文章。

htmlentities和htmlspecialchars的共同点:

这两个函数的共同点是他们都可以将预定义的字符转换为HTML实体,也就是不让浏览器去解析运行html代码,而是原样输出代码。

htmlentities和htmlspecialchars不同之处

1、htmlentities将所有html标签转换为HTML实体,而htmlspecialchars只是将& ' " < 和 > 这几个特殊符号转换为HTML实体。

2、当被转换的字符串中有中文时,如果htmlentities不指定编码,则会出现乱码,而htmlspecialchars不会出现中文乱码。

请看下面实例:

<?php
    $str = '<a href="http://www.manongjc.com">码农教程</a>';
    echo htmlentities($str).'<br/>';//没有指定编码,会出现中文乱码
    echo htmlentities($str, ENT_COMPAT , "UTF-8")."<br/>";//指定了UTF-8编码,不会出现中文乱码
    echo htmlspecialchars($str);
?>

在浏览器上输出如下结果:

<a href="http://www.manongjc.com">ç �å��æ��ç¨�</a>
<a href="http://www.manongjc.com">码农教程</a>
<a href="http://www.manongjc.com">码农教程</a>

查看源码如下:

&lt;a href=&quot;http://www.manongjc.com&quot;&gt;&ccedil;&nbsp;&aring;†œ&aelig;•™&ccedil;&uml;‹&lt;/a&gt;<br/>&lt;a href=&quot;http://www.manongjc.com&quot;&gt;码农教程&lt;/a&gt;<br/>&lt;a href=&quot;http://www.manongjc.com&quot;&gt;码农教程&lt;/a&gt;