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('&amp;', '&quot;', '&lt;', '&gt;'), $string));
}
return $string;
}
不知道那位大侠知道这个函数有什么意义?小弟在此谢过了

解决方案 »

  1.   

    对参数中含有的特殊html符号进行替换操作。如果参数是数组,则利用递归对值进行替换操作。
    返回值$string是一个字符串 或是一个数组
      

  2.   

    多谢楼上,麻烦你 
    /&amp;((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/
    这句话的具体含义吗,这是替换什么特殊字符啊
      

  3.   

    这里主要解释
    $string = preg_replace('/&amp;((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1',
    str_replace(array('&', '"', '<', '>'), array('&amp;', '&quot;', '&lt;', '&gt;'), $string));
    代码分为两部分,第一部分str_replace(array('&', '"', '<', '>'), array('&amp;', '&quot;', '&lt;', '&gt;')这段代码是将html中可能出现的四种特殊字符进行转义,分别是
    &转&amp;
    "转&quot;
    <转&lt;
    >转&gt;
    然后是第二部分
    preg_replace('/&amp;((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1',
    '$string', $string));
    这里$string是上面str_replace函数替换以后的字符串
    需要注意的是上面&转&amp;已经将&进行了转义,preg_replace函数其实是在把html特殊字符和unicode编码中被错误转换为&amp;的部分转换会&
    关于html特殊字符可以参考http://www.qqhzl.cn/fuhao/2009/0917/2694.html
    通过参考地址中的内容可以看到html特殊字符都是由&#开头后面加3-5个数字或者&#开头加一个字符和2-5个字符或数字组成的字符串
    而unicode编码是以&#开头后面加4个16进制数字组成的字符串,