function_common.php里面有个这样的函数
function shtmlspecialchars($string) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = shtmlspecialchars($val);
}
} else {
$string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1',
str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string));
}
return $string;
}
不知道那位大侠知道这个函数有什么意义?小弟在此谢过了
function shtmlspecialchars($string) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = shtmlspecialchars($val);
}
} else {
$string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1',
str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string));
}
return $string;
}
不知道那位大侠知道这个函数有什么意义?小弟在此谢过了
返回值$string是一个字符串 或是一个数组
/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/
这句话的具体含义吗,这是替换什么特殊字符啊
$string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1',
str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string));
代码分为两部分,第一部分str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>')这段代码是将html中可能出现的四种特殊字符进行转义,分别是
&转&
"转"
<转<
>转>
然后是第二部分
preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1',
'$string', $string));
这里$string是上面str_replace函数替换以后的字符串
需要注意的是上面&转&已经将&进行了转义,preg_replace函数其实是在把html特殊字符和unicode编码中被错误转换为&的部分转换会&
关于html特殊字符可以参考http://www.qqhzl.cn/fuhao/2009/0917/2694.html
通过参考地址中的内容可以看到html特殊字符都是由&#开头后面加3-5个数字或者&#开头加一个字符和2-5个字符或数字组成的字符串
而unicode编码是以&#开头后面加4个16进制数字组成的字符串,