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

举个简单的例子:

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

  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个参数。

  1. <?php
  2. //ENT_COMPAT不转化'字符,ENT_QUOTES转化
  3. $str = "< ' \" > \n";
  4. echo htmlentities($str, ENT_COMPAT);
  5. echo htmlentities($str, ENT_QUOTES);
  6. //ouput:
  7. //&lt; ' &quot; &gt;
  8. //&lt; ' &quot; &gt;
  9.  
  10. //ENT_NOQUOTES单引号和双引号都不转化
  11. //ENT_IGNORE于php5.3加入,对于无效的代码单元序列直接替换成empty string
  12. //ENT_SUBSTITUTE与ENT_IGNORE类似,但不是用empty string替换。php5.4加入
  13. //参数可以通过位运算加入:ENT_QUOTES | ENT_IGNORE
  14.  
  15. //$encoding参数设置文档编码
  16. //现在文档设置成ANSI编码,然后运行下面偌
  17. $str = "< ' \" > 中文\n";
  18. echo htmlentities($str, ENT_QUOTES, 'GB2312');
  19. echo htmlentities($str, ENT_QUOTES, 'ISO8859-1');
  20. echo htmlentities($str, ENT_QUOTES, 'BIG5');
  21. //OUTPUT:
  22. //&lt; ' &quot; &gt; 中文
  23. //&lt; ' &quot; &gt; &Ouml;&ETH;&Icirc;&Auml;
  24. //&lt; ' &quot; &gt; 中文
  25.  
  26. //现在文档设置成UTF8编码,然后运行下面偌
  27. $str = "< ' \" > 中文\n";
  28. echo htmlentities($str, ENT_QUOTES, 'GB2312');
  29. echo htmlentities($str, ENT_QUOTES, 'ISO8859-1');
  30. echo htmlentities($str, ENT_QUOTES, 'UTF-8');
  31. //OUTPUT:
  32. //&lt; ' &quot; &gt; &auml;&cedil;&shy;&aelig;??
  33. //&lt; ' &quot; &gt; &auml;&cedil;&shy;&aelig;??
  34. //&lt; ' &quot; &gt; 中文
  35.  
  36. ?>

htmlspecialschars与htmlentities的区别的更多相关文章

  1. php htmlentities和htmlspecialchars 的区别

    很多人都以为htmlentities跟htmlspecialchars的功能是一样的,都是格式化html代码的,我以前也曾这么认为,但是今天我发现并不是这样的.   The translations ...

  2. PHP htmlentities 和 htmlspecialchars的区别

    一直对这两个转换htm字符为html实体的函数混淆不清,查询了一下文档,总结如下 htmlentities: Convert all applicable characters to HTML ent ...

  3. strip_tags、htmlentities、htmlspecialchars的区别

    一.strip_tags() 函数剥去字符串中的 HTML.XML 以及 PHP 的标签. strip_tags(string,allow) 注释:可通过allow设置允许的标签.这些标签不会被删除. ...

  4. PHP中 magic_quotes_gpc 和 magic_quotes_runtime 区别及其反斜线转义问题

    php中关于反斜线转义: php中数据的魔法引用函数 magic_quotes_gpc  或 magic_quotes_runtime     设置为on时,当数据遇到 单引号' 和 双引号" ...

  5. PHP中magic_quotes_gpc和 magic_quotes_runtime区别及其反斜线转义问题

    php中关于反斜线转义: php中数据的魔法引用函数 magic_quotes_gpc  或 magic_quotes_runtime      设置为on时,当数据遇到 单引号' 和 双引号&quo ...

  6. php过滤字段htmlentities,htmlspecialchars,strip_tags

    1.strip_tags:过滤html标签比如<a> <html> <script> 如: $str = '<a href="test.html&q ...

  7. 过滤输入htmlentities与htmlspecialchars用法

    过滤输入 (即来自所列数据源中的任何数据)是指,转义或删除不安全的字符.在数据到达应用的存储层之前,一定要过滤输入数据.这是第一道防线.假如网站的评论表单接收html,默认情况下 访客可以毫无阻拦地在 ...

  8. 153-PHP htmlentities函数

    <?php //定义一个HTML代码字符串 $str=<<<HTM <a href=#><b><i>到一个网址的链接</i>&l ...

  9. c#与java的区别

    经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...

随机推荐

  1. Python 相关疑问

    1. 如果我的脚本error handling 做的好,在ctrl+c退出的时候是不是不应该有任何traceback log? 2. repr() str() eval() 之间的区别? 3. 参数传 ...

  2. shell脚本中定义路径变量出现的BUG

    =========================================================================== if 语句中的定义路径变量 引发命令的PATH路 ...

  3. Oracle 的备份和恢复

    Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备 份.导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一. 导出/导入(Export/Import) 利 ...

  4. 构建一个.net的干货类库,以便于快速的开发 - 验证码

    一个验证码对于一个网站的作用不言而喻,而随着技术的发展验证码的种类也开始多了起来,发展至今很多网站已经不再使用一种验证码,为满足需求程序猿就要写很多的方法来适应需求,今天我就来介绍我之前收集到的验证码 ...

  5. CSS3 按钮特效(一)

    1. 实例 2.HTML 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  6. SugarCRM安装踩雷(一)

    安装SugarCRM前置条件: 1.找对平台.正确版本的安装包 2.APACHE + MYSQL + TOMCAT环境先确保OK 坑1: 进入安装参数设置步骤的MYSQL用户密码——这里根据Mysql ...

  7. Xamarin.Forms跨平台开发入门-第二部分:深入解析

    英文原文: https://developer.xamarin.com/guides/xamarin-forms/getting-started/hello-xamarin-forms/deepdiv ...

  8. Node.js——body方式提交数据

    引入核心模块 http,利用其 api(http.createServer) 返回一个 http.server 实例,这个实例是继承于net.Server,net.Server 也是通过net.cre ...

  9. mysql 查看存储过程 并导出

    查询数据库中的存储过程 select * from mysql.proc where db = dbName and `type` = 'PROCEDURE' show procedure statu ...

  10. Ubuntu中update-grub2与update-grub的区别

    没有区别. Ubuntu 9.10及更高版本已安装GRUB2,但sudo update-grub仍然以标准命令为准. sudo update-grub和sudo update-grub2是等同的,所以 ...