首页 » PHP笔记 » php htmlentities和htmlspecialchars的区别

php htmlentities和htmlspecialchars的区别

高蒙 2016/03/27 18:28 2.4k浏览 0评论 PHP


每次遇到htmlentities和htmlspecialchars的时候,我就要去查一下,因为太长了,没记住。

这两个函数在格式化带有英文字符的html代码的时候基本没啥问题,但是htmlentities对中文字符也不放过,这样得出来的结果是中文字符部分变为一堆乱码。

其实htmlentities和htmlspecialchars的功能都是一样的,即将预定义的字符转化为html实体。

但是htmlentities是对所有HTML定义的entity都不放过,包括各种特殊字符和中文,这样得出来的结果是中文字符部分变为一堆乱码。

主要作用:

就是让浏览器输出html代码,不去解析该html代码了,比如说在发文章的时候,为了不让其输入的html代码生效,可以使用htmlspecialchars。

两者区别:

htmlentities转换所有的html标记,htmlspecialchars只格式化& ' " < 和 > 这几个特殊符号。

例:

<?php
    $str = '<a href="http://www.shuchengxian.com">php点点通</a>';
    echo htmlentities($str)."<br>";                       // 不指定编码,中文会乱码
    echo htmlentities($str, ENT_COMPAT , "UTF-8")."<br>"; 
    echo htmlspecialchars($str);                          // 因为html只转义预定义的几个字符,所以不用指定编码了,建议使用htmlspecialchars
?>

结果如下:

<a href="http://www.shuchengxian.com">php���</a>
<a href="http://www.shuchengxian.com">php点点通</a>
<a href="http://www.shuchengxian.com">php点点通</a>

右键查看html源码:

&lt;a href=&quot;www.shuchengxian.com&quot;&gt;php&ccedil;‚&sup1;&ccedil;‚&sup1;&eacute;€š&lt;/a&gt;<br>
&lt;a href=&quot;www.shuchengxian.com&quot;&gt;php点点通&lt;/a&gt;<br>
&lt;a href=&quot;www.shuchengxian.com&quot;&gt;php点点通&lt;/a&gt;

 




相关文章

我有话说

站长昵称:(*)

输入内容:

选个头像:

评论列表

    ...

    高蒙

    男, PHP程序猿

    文章

    487

    标签

    42

    热度

    10w+

    南京, 江苏, 中国

    人生要是没有理想, 那跟咸鱼有什么分别。