zoukankan      html  css  js  c++  java
  • htmlspecialschars与htmlentities的区别

    根据php手册,htmlentities与htmlspecialchars功能几乎是一模一样。唯一的差别就是,对于无效的代码单元序列(通俗讲就是不认识的编码)是否进行编码。htmlentities会进行编码,而htmlspecialchars不会。

    举个简单的例子:

    一个php文件是以utf-8格式编码的,里面存放中文字符,这时你使用htmlentities,而且encoding设置为ISO-8859-1, 中文字符就会被编码了,如下面

    <?php
    $str = '中文字符';
    echo htmlentities($str, ENT_QUOTES, 'ISO-8859-1');
    //&auml;&cedil;&shy;&aelig;��&aring;&shy;&ccedil;&not;&brvbar;
    echo htmlentities($str, ENT_QUOTES, 'UTF-8');
    //中文字符
    ?>

    htmlentites的使用

    htmlentities(string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] )后面可带4个参数。

    <?php
    //ENT_COMPAT不转化'字符,ENT_QUOTES转化
    $str = "< ' " > 
    ";
    echo htmlentities($str, ENT_COMPAT);
    echo htmlentities($str, ENT_QUOTES);
    //ouput:
    //&lt; ' &quot; &gt;
    //&lt; &#039; &quot; &gt;
    
    //ENT_NOQUOTES单引号和双引号都不转化
    //ENT_IGNORE于php5.3加入,对于无效的代码单元序列直接替换成empty string
    //ENT_SUBSTITUTE与ENT_IGNORE类似,但不是用empty string替换。php5.4加入
    //参数可以通过位运算加入:ENT_QUOTES | ENT_IGNORE
    
    //$encoding参数设置文档编码
    //现在文档设置成ANSI编码,然后运行下面偌
    $str = "< ' " > 中文
    ";
    echo htmlentities($str, ENT_QUOTES, 'GB2312');
    echo htmlentities($str, ENT_QUOTES, 'ISO8859-1');
    echo htmlentities($str, ENT_QUOTES, 'BIG5');
    //OUTPUT:
    //&lt; &#039; &quot; &gt; 中文
    //&lt; &#039; &quot; &gt; &Ouml;&ETH;&Icirc;&Auml;
    //&lt; &#039; &quot; &gt; 中文
    
    //现在文档设置成UTF8编码,然后运行下面偌
    $str = "< ' " > 中文
    ";
    echo htmlentities($str, ENT_QUOTES, 'GB2312');
    echo htmlentities($str, ENT_QUOTES, 'ISO8859-1');
    echo htmlentities($str, ENT_QUOTES, 'UTF-8');
    //OUTPUT:
    //&lt; &#039; &quot; &gt; &auml;&cedil;&shy;&aelig;??
    //&lt; &#039; &quot; &gt; &auml;&cedil;&shy;&aelig;??
    //&lt; &#039; &quot; &gt; 中文
    
    ?>
  • 相关阅读:
    JavaScript继承详解 转
    Chinese Consumer and Websites
    【转载】C#防SQL注入过滤危险字符信息
    记一次在数据库中查询:“包含”或者“仅包含”某些商品的订单的方法
    IE 6 position: relative + li 问题
    【转】c# 位操作
    基于asp.net MVC的无刷新文件上传
    C++ 类继承内存布局
    美杜杉 主动防御最新版
    [转]COM 连接点
  • 原文地址:https://www.cnblogs.com/mengzhongshi/p/3474334.html
Copyright © 2011-2022 走看看