discuz函数dhtmlspecialchars源码分析
1、if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = dhtmlspecialchars($val, $flags); }}如果$string是数组类型,递归调自己。实现数组处理。可处理多维数组。
2、if($flags 屏顿幂垂=== null) { $string = str_replace(array('&稆糨孝汶;', '"', '<', '>'), array('&', '"', '<', '>'), $string);}如果flags==null,使用字符串替换函数str_replace替换。替换'&', '"', '<', '>'四个字符,”’”单引号不替换。htmlspecialchars原装函数无flags形参,也不替换。两者在功能上相同。
3、if(PHP_VERSION < '5.4.0') { $string = htmlspecialchars($string, $flags);}PHP版本小于5.4.0,不处理编码,默认编码用php系统配置文件默认编码。如果默认是其他编码,使用这个函数可能有其他问题。不过不用担心,目前大部分应该没有使用版本小于5.4.0的。


4、if(strtolo嘛术铹砾wer(CHARSET) == 'utf-8') { $charset = 'UTF-8'稆糨孝汶;} else { $charset = 'ISO-8859-1';}常量CHARSET值来自配置文件。判断CHARSET是否是utf-8编码。GBK版本执行else,$charset = 'ISO-8859-1';。discuz有GBK版本。
5、$string = htmlspecialchars($string, $flags, $charset);执行原装函数。