【即将关站通知●已关闭注册功能】,倒计时剩余:计算中...

[discuz建站技术] Discuz!开发之字符串处理函数dhtmlspecialchars介绍

[复制链接]
魔趣吧站长魔趣吧官方成员 实名认证 发表于 2018-5-1 22:02:37 | 显示全部楼层 |阅读模式

dhtmlspecialchars定义于Discuz!核心函数库:\source\function\function_core.php,代码逻辑如下:

  1. function dhtmlspecialchars($string, $flags = null) {  
  2.     if(is_array($string)) {  
  3.         foreach($string as $key => $val) {  
  4.             $string[$key] = dhtmlspecialchars($val, $flags);  
  5.         }  
  6.     } else {  
  7.         if($flags === null) {  
  8.             $string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string);  
  9.             if(strpos($string, '&#') !== false) {  
  10.                 $string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/', '&\\1', $string);  
  11.             }  
  12.         } else {  
  13.             if(PHP_VERSION < '5.4.0') {  
  14.                 $string = htmlspecialchars($string, $flags);  
  15.             } else {  
  16.                 if(strtolower(CHARSET) == 'utf-8') {  
  17.                     $charset = 'UTF-8';  
  18.                 } else {  
  19.                     $charset = 'ISO-8859-1';  
  20.                 }  
  21.                 $string = htmlspecialchars($string, $flags, $charset);  
  22.             }  
  23.         }  
  24.     }  
  25.     return $string;  
  26. }  
复制代码
$ W- C$ q8 V- }- x9 n

dhtmlspecialchars实际上是对PHP内置函数htmlspecialchars的二次封装和补充,使得不仅可以处理字符串还可以递归处理数组;- ?2 J6 W0 v; R* Q$ x; Z9 h6 y

它的作用是是可以把一个数组或字符串中的字符转化为html实体,可以防止页面的跨站问题,那么我们看到他的转换就是将‘&’,‘”’,‘<’,‘>’转化为'&amp;', '&quot;', '&lt;', '&gt;'。但是这里面会有一些问题,如‘& #x5FD7;’这样的16进制的html字符,为了防止这样的字符被错误转译,所以又使用了正则进行匹配,把这样的字符又转换回来;一般使用在内容输出到界面之前处理要输出的内容;


3 l9 a! G" K+ Y9 {( D, M

魔趣吧版权声明1,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2,本文内容仅代表作者本人观点,不代表本网站立场,作者文责自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3,本文内容,包括但不限于源码、文字、图片等,仅供参考使用,本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容
4,如您认为本文内容侵犯了您的权益,请与我们联系!我们将在5个工作日内做出处理!本站保留全部修改、解释、更新本声明的权利魔趣吧

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线支持
关闭
欢迎来到魔趣吧
如果你有建站技术问题、仿站需求、模板插件修改需求,请联系我们的技术支持!高效率,低价格的帮你搞定!
请认准魔趣吧唯一官网:www.moqu8.com,谨防假冒网站!

一般问题请到【求助区】发帖咨询(免费)!

邮箱咨询:
winkill2012@qq.com

邮箱咨询需注明:资源地址+本站用户名+具体问题,三者缺一不做处理。非本站资源不处理!
在线支持
快速回复 返回列表

关于魔趣吧|魔趣建站

魔趣吧,志在打造全国最大的建站资源共享平台。 本站提供海量免费的建站资源,包括WordPress模板、Discuz精仿模板、PHPWind模板、phpcms模板、Discuz精仿插件、帝国cms模板、织梦模板等上万精品模板!同时,提供各种建站素材、JS特效、整站程序源码!
服务中文站长,传播分享精神!建站,就来魔趣吧!!
2015-2024 魔趣吧 ( 豫ICP备2021024354号 )   豫公网安备41030402000182号 百度统计
HTTPS安全认证
|网站地图 | 已运行:天 
温馨提示:本站所有资源、教程、源码,不得用于非法站点及用途,否则,本站将终止提供任何服务! Powered by Discuz! Licensed