根据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 = "< ' \" > \n";
echo htmlentities($str, ENT_COMPAT);
echo htmlentities($str, ENT_QUOTES);
//ouput:
//&lt; ' &quot; &gt;
//&lt; ' &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 = "< ' \" > 中文\n";
echo htmlentities($str, ENT_QUOTES, 'GB2312');
echo htmlentities($str, ENT_QUOTES, 'ISO8859-1');
echo htmlentities($str, ENT_QUOTES, 'BIG5');
//OUTPUT:
//&lt; ' &quot; &gt; 中文
//&lt; ' &quot; &gt; &Ouml;&ETH;&Icirc;&Auml;
//&lt; ' &quot; &gt; 中文 //现在文档设置成UTF8编码,然后运行下面偌
$str = "< ' \" > 中文\n";
echo htmlentities($str, ENT_QUOTES, 'GB2312');
echo htmlentities($str, ENT_QUOTES, 'ISO8859-1');
echo htmlentities($str, ENT_QUOTES, 'UTF-8');
//OUTPUT:
//&lt; ' &quot; &gt; &auml;&cedil;&shy;&aelig;??
//&lt; ' &quot; &gt; &auml;&cedil;&shy;&aelig;??
//&lt; ' &quot; &gt; 中文 ?>

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. UIAlertController的使用,代替UIAlertView和UIActionSheet

    在iOS8以后,UIAlertView就开始被抛弃了. 取而代之是UIAlertController 以前是警示框这样写: UIAlertView *alert = [[UIAlertView all ...

  2. 220 Contains Duplicate III 存在重复 III

    给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使 nums [i] 和 nums [j] 的绝对差值最大为 t,并且 i 和 j 之间的绝对差值最大为 k. 详见:https://le ...

  3. 基于CentOS6.5下如何正确安装和使用Tcpreplay来重放数据(图文详解)

    前期博客 基于CentOS6.5下snort+barnyard2+base的入侵检测系统的搭建(图文详解)(博主推荐) tcpreplay是什么? 简单的说, tcpreplay是一种pcap包的重放 ...

  4. listBox 搜索左右移动

    <td align="left" width="50%"> 查询:<asp:TextBox ID="SacffSearch" ...

  5. Spring注解驱动开发之AOP

    前言:现今SpringBoot.SpringCloud技术非常火热,作为Spring之上的框架,他们大量使用到了Spring的一些底层注解.原理,比如@Conditional.@Import.@Ena ...

  6. FastDFS的简单使用

    互联网中有海量的文件,比如电商网站有海量的图片文件,视频网站有海量的视频文件,如果使用传统的模式上传文件,肯定是不可取的.因此需要使用第三方服务器来存储图片 . 一.FastDFS简介 ​ FastD ...

  7. pickle序列化与反序列化 + eval说明

    import pickle # #1.从文件中读取pickle格式with open('egon.json','rb') as f: pkl=f.read()#2.将json_str转成内存中的数据类 ...

  8. Android学习笔记(九) SeekBar和RatingBar

    一.SeekBar的主要属性 -max -progress -secondaryProgress 二.onSeekBarChangeListener -onProgressChanged(SeekBa ...

  9. Farseer.net轻量级ORM开源框架说明及链接索引

    项目简介 基于.net framework 4 开发. 基于Lambda表达式快速上手的ORM框架. 参考Entity Framework的调用方式. 基于Database First模式. POCO ...

  10. jQuery动画处理

    $(selector).hide(speed,callback);隐藏 $(selector).show(speed,callback);显示 $(selector).toggle(speed,cal ...