免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1548 | 回复: 0
打印 上一主题 下一主题

PHP中htmlentities跟htmlspecialchars的区别 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-10 11:00 |只看该作者 |倒序浏览
很多人都以为htmlentities跟htmlspecialchars的功能是一样的,都是格式化html代码的,我以前也曾这么认为,但是今天我发现并不是这样的。
这两个函数在格式化带有英文字符的html代码的时候基本没啥问题,但是htmlentities对中文字符也不放过,这样得出来的结果是中文字符
部分变为一堆乱码。当时做英文站的时候根本就没觉察到这个问题,而今天公司的一个收藏站却因为有有非英文字符而出现了问题,我最终查出来是
htmlentities这个函数的问题,同时我也找到了htmlspecialchars这个函数。
对于这两个函数,php手册上都是英文做的解释,其中在htmlentities函数的说明部分有这么一段英文:
This function is identical to htmlspecialchars() in all ways, except
with htmlentities(), all characters which have HTML character entity
equivalents are translated into these entities.
从这句话中我们也可以看出来这两个函数虽然基本功能差不多,但是还是有细微的差别在里面的。再仔细看htmlspecialchars函数里面的一段话:
The translations performed are:
‘&’ (ampersand) becomes ‘&’
‘”‘ (double quote) becomes ‘”‘ when ENT_NOQUOTES is not set.
”’ (single quote) becomes ”’ only when ENT_QUOTES is set.
‘’ (greater than) becomes ‘>’
可以了解到htmlspecialchars只转化上面这几个html代码,而htmlentities却会转化所有的html代码,连同里面的它无法识别的中文字符也给转化了。
我们可以拿一个简单的例子来做比较:
测试页面';
echo htmlentities($str);
?>
测试页面';
echo htmlspecialchars($str);
?>
有条件的朋友,可以分别运行一下上面的这两段代码,就可以看出两者的差别了。
[color="#ff6600"]推荐阅读:
浴室里的青苔
藏在壁橱里的床
机场行李锁系统
全球首款便携蓝光播放器
盲人手表
带量杯的菜板
USB安全套
晟碟(SanDisk)推出带备份功能的U盘
机器人造型储蓄罐
煎蛋T恤
挂挡水龙头
超小自行车
折叠梯
天下第一奇毒含笑半步癫上市了
气囊警示牌
餐巾纸日历
心形露背装
硬盘也会闹情绪
720P便携高清闪存摄像机
环保地球仪
三星6.5毫米液晶电视
停转的手表
会发短信的洗衣机
车座锁
举重调料瓶
靠柠檬发电的电子钟
7x7x7魔方,挑战脑极限 视频
虚拟纽约再进化!
新科技,让你在家学习滑雪!
S60第五版的BT下载软件
A+网

书签

地图
新鲜
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/78410/showart_1786323.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP