首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

php 正则表达式含意

2013-01-23 
php正则表达式含义$string preg_replace(/&((#(\d{3,5}|x[a-fA-F0-9]{4})))/, &\\1,str_replac

php 正则表达式含义
$string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/', '&\\1',
str_replace(array('&', '"', '<', '>'), array('&amp;', '&quot;', '&lt;', '&gt;'), $string));

转义字符串中的特殊字符 

'/&amp;((#(\d{3,5}|x[a-fA-F0-9]{4}));)/', '&\\1', 这部分含义?
[解决办法]
拆开理解就是了
然后把&amp;#nnnnn 或 &amp;#xnnnn 换成 &#nnnnn

\\1表示对第一个括号内的内容原样保留,就是((#(\d{3,5}
[解决办法]
x[a-fA-F0-9]{4}))这部分
[解决办法]

引用:
$string = preg_replace('/&amp;amp;((#(\d{3,5}
[解决办法]
x[a-fA-F0-9]{4}));)/', '&amp;\\1',
str_replace(array('&amp;', '"', '<', '>'), array('&amp;amp;', '&amp;quot;', '&amp;lt;', '&amp;gt;'), $str……


这个是DISCUZ 的过滤函数对吧。
其实这个函数的意识就是过滤 HTML字符串,但是那些已经被过滤了的,比如“'"”单引号双引号。“&”的实体是&amp;那么像这样的就不过滤,保留,以防多次过滤。结果 &amp;变成了&ampamp;




//取消HTML代码
function shtmlspecialchars($string) {
if(is_array($string)){
foreach($string as $key => $val) {
$string[$key] = shtmlspecialchars($val);
}
} else{
$string = preg_replace('/&amp;((#(\d{3,5}
[解决办法]
x[a-fA-F0-9]{4})
[解决办法]
[a-zA-Z][a-z0-9]{1,5});)/', '&\\1',
str_replace(array('&', '"', '<', '>','\''), array('&amp;', '&quot;', '&lt;', '&gt;','&#039;'), $string));
}
return $string;
}

热点排行