`

htmlentities和htmlspecialchars的区别(转载)

    博客分类:
  • php
阅读更多

这两个函数的功能都是转换字符为HTML字符编码,特别是url和代码字符串。防止字符标记被浏览器执行。转换英文时二者不会出现问题,当转换中文时htmlentities()就会出现乱码。

区别:htmlentities转换所有的html标记,而htmlspecialchars只转换&、”、’、<、>这5个标记


$str = '<a href="demo.php?m=index&a=index&name=中文">测试页面</a>';

echo 'htmlentities指定GB2312编码:'.htmlentities($str,ENT_COMPAT,"GB2312").'';

echo 'htmlentities未指定编码:'.htmlentities($str).'';

$str = '<a href="demo.php?m=index&a=index&name=中文">测试页面</a>';

echo htmlspecialchars($str).'';

效果:

htmlentities指定GB2312编码:<a href="demo.php?m=index&a=index&name=中文">测试页面</a>

htmlentities未指定编码:<a href="demo.php?m=index&a=index&name=ÖÐÎÄ">²âÊÔÒ³Ãæ</a>

<a href="demo.php?m=index&a=index&name=中文">测试页面</a>



显示源代码:
htmlentities指定GB2312编码:&lt;a href=&quot;demo.php?m=index&amp;a=index&amp;name=中文&quot;&gt;测试页面&lt;/a&gt;<br/>htmlentities未指定编码:&lt;a href=&quot;demo.php?m=index&amp;a=index&amp;name=&Ouml;&ETH;&Icirc;&Auml;&quot;&gt;&sup2;&acirc;&Ecirc;&Ocirc;&Ograve;&sup3;&Atilde;&aelig;&lt;/a&gt;<br/>&lt;a href=&quot;demo.php?m=index&amp;a=index&amp;name=中文&quot;&gt;测试页面&lt;/a&gt;<br/>

语法:

string htmlentities ( string string [, int quote_style [, string charset]] )

string Required. Specifies the string to convert
必要参数。指定需要解码的字符串对象
quotestyle Optional. Specifies how to encode single and double quotes.
可选参数。定义如何对单引号和双引号进行编码。

The available quote styles are:
可能值:

ENT_COMPAT – Default. Encodes only double quotes
ENT_COMPAT –对双引号进行编码,不对单引号进行编码
ENT_QUOTES – Encodes double and single quotes
ENT_QUOTES –对单引号和双引号进行编码
ENT_NOQUOTES – Does not encode any quotes
ENT_NOQUOTES –不对单引号或双引号进行编码

character-set Optional. A string that specifies which character-set to use.
可选参数。指定使用什么样的字符串设置

Allowed values are:
可用值如下:

ISO-8859-1 – Default. Western European
ISO-8859-1 –默认值。西欧文
ISO-8859-15 – Western European (adds the Euro sign + French and Finnish letters missing in ISO-8859-1)
ISO-8859-15 –西欧文(加入了ISO-8859-1中没有的符号+法语和芬兰字母)
UTF-8 – ASCII compatible multi-byte 8-bit Unicode
UTF-8 – 与ASCII兼容的多字节8位统一的字符编码标准
cp866 – DOS-specific Cyrillic charset
cp866 – DOS – 详细的西尔里[Cyrillic]字符设置
cp1251 – Windows-specific Cyrillic charset
cp1251 – Windows-详细的西尔里[Cyrillic]字符设置
cp1252 – Windows specific charset for Western European
cp1252 – Windws – 详细的西欧字体的字体属性
KOI8-R – Russian
KOI8-R – 俄罗斯文
BIG5 – Traditional Chinese, mainly used in Taiwan
BIG5 – 繁体中文,主要在台湾使用
GB2312 – Simplified Chinese, national standard character set
GB2312 –简体中文,主要在中国大陆使用
BIG5-HKSCS – Big5 with Hong Kong extensions
BIG5-HKSCS – 在香港使用的Big5扩展
Shift_JIS – Japanese
Shift_JIS –日文
EUC-JP – Japanese
EUC-JP –日文

string htmlspecialchars ( string string [, int quote_style [, string charset]] )

The translations performed are:

‘&’ (ampersand) becomes ‘&amp;’
‘”‘ (double quote) becomes ‘&quot;’ when ENT_NOQUOTES is not set.
”’ (single quote) becomes ‘&#039;’ only when ENT_QUOTES is set.
‘<’ (less than) becomes ‘&lt;’
‘>’ (greater than) becomes ‘&gt;’

其中的quote_style及charset设置和上面的差不多
分享到:
评论
1 楼 LYH0323 2014-11-09  
             

相关推荐

    php htmlentities和htmlspecialchars 的区别

    在总结一下htmlentities和htmlspecialchars两者之间的区别和联系:htmlentities适用于需要转换所有HTML特殊字符的场景,而htmlspecialchars适用于只需要转换特定字符的场景。两者都有其适用的范围和条件,合理选择...

    php过滤输入操作之htmlentities与htmlspecialchars用法分析

    使用htmlspecialchars和htmlentities可以防止这种情况发生: ```php echo新闻中心entities($str); // 将转换所有的特殊字符,包括单引号 echohtmlspecialchars($str); // 默认情况下不会转义单引号,需要使用ENT_...

    浅谈htmlentities 、htmlspecialchars、addslashes的使用方法

    本文将深入探讨四个常用的字符串处理函数:html_entity_decode()、htmlentities()、addslashes()和htmlspecialchars(),以及它们在防止XSS(跨站脚本攻击)和其他安全问题中的作用。 1. **html_entity_decode()** ...

    php 中htmlentities导致中文无法查询问题

    总结来说,`htmlspecialchars`和`htmlentities`虽然在处理特殊字符上有所不同,但在处理中文字符时,`htmlentities`可能导致查询问题,因为它将所有非ASCII字符编码。因此,根据具体场景选择合适的函数,并在必要时...

    php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总

    当然,htmlentities也会受影响,不过,对于中文站来说一般用htmlspecialchars比较常见,htmlentities非常少用到。 可能老外认为网页普遍应该是utf-8编码的,于是苦了那些用GB2312,GBK编码的中文站……! 具体表现:...

    整理php防注入和XSS攻击通用过滤

    对网站发动XSS攻击的方式有很多种,仅仅使用php的一些内置过滤函数是对付不了的,即使你将filter_var,mysql_real_escape_string,htmlentities,htmlspecialchars,strip_tags这些函数都使用上了也不一定能保证绝对的...

    PHP htmlentities()函数用法讲解

    值得注意的是,htmlentities()函数的使用并不意味着可以替代其他安全措施,如输入数据的过滤和验证。在处理不受信任的数据时,仍需要采取适当的防范措施,防止安全漏洞。 总结以上内容,htmlentities()函数是PHP中...

    PHP关于htmlspecialchars、strip_tags、addslashes的解释

    本文将详细解释htmlspecialchars、strip_tags、addslashes这三个函数的用法和应用场景。 首先,strip_tags函数的主要功能是移除字符串中所有的HTML标签。这意味着所有在字符串中的HTML代码,如、 、等标签,都会...

    HTMLEntities-开源

    通过引入这个库,开发者可以方便地在Java代码中调用`htmlentities`和`unhtmlentities`方法,进行字符的编码与解码。这个开源项目可能包括以下功能: 1. 对特殊字符进行转义,以防止XSS攻击。 2. 处理Unicode字符,...

    htmlEntities-for-lua:用于 lua 解码 html 实体的模块

    Lua 的 htmlEntities HTML 实体解码/编码 为 Lua5.3 编写但使用 lua5.x! 特征 快速地! 没有依赖! 易于实施! 安装 模块可通过。 可以使用luarocks命令行工具安装它。 # LuaRocks luarocks install ...

    htmlEntities - 解码/编码 html 实体:一个易于使用的功能来解码/编码 html 实体。 提供“entities.mat”,它是一个由字符和实体组成的表。-matlab开发

    %解码decodedString = htmlEntities('my/path/to/entities.mat','我编码的 str&#239;ng',0); &gt;&gt; '我的编码字符串' % 编码encodingString = htmlEntities('my/path/to/entities.mat','my strïng',1); &gt;&gt; '&#109;&#...

    php htmlentities()函数的定义和用法

    - string:这是htmlentities()函数的必需参数,代表了需要进行转换的原始字符串。 - flags:这是一个可选参数,用于指定如何处理引号以及如何处理无效的编码。有多个可用的选项: - ENT_COMPAT:默认选项,仅将双...

    php htmlspecialchars()与shtmlspecialchars()函数的深入分析

    而在本篇文章中,我们将探讨htmlspecialchars()函数的用法和一些关键的细节,并简要提及一个可能与htmlspecialchars()相反功能的神秘函数——shtmlspecialchars()。 ### htmlspecialchars() 函数 htmlspecialchars...

    PHP里8个鲜为人知的安全函数分析

    主要介绍了PHP里8个鲜为人知的安全函数,较为详细的分析了addslashes、htmlentities、htmlspecialchars及md5等函数在PHP程序设计安全中所起到重要作用,非常具有实用价值,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics