php 正则表达式含意

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 11:11:45967ブラウズ

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

转义字符串中的特殊字符 

'/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/', '&\\1', 这部分含义?


------解决方案--------------------
拆开理解就是了
然后把&#nnnnn 或 &#xnnnn 换成 nnnnn

\\1表示对第一个括号内的内容原样保留,就是((#(\d{3,5}
------解决方案--------------------
x[a-fA-F0-9]{4}))这部分
------解决方案--------------------
引用:
$string = preg_replace('/&((#(\d{3,5}
------解决方案--------------------
x[a-fA-F0-9]{4}));)/', '&\\1',
str_replace(array('&', '"', ''), array('&', '"', '<', '>'), $str……


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


<br /><br />//取消HTML代码<br />function shtmlspecialchars($string) {<br />	if(is_array($string))	{<br />		foreach($string as $key => $val) {<br />			$string[$key] = shtmlspecialchars($val);<br />		}<br />	} else{<br />		$string = preg_replace('/&((#(\d{3,5}<br><font color='#FF8000'>------解决方案--------------------</font><br>x[a-fA-F0-9]{4})<br><font color='#FF8000'>------解决方案--------------------</font><br>[a-zA-Z][a-z0-9]{1,5});)/', '&\\1',<br />			str_replace(array('&', '"', '<', '>','\''), array('&', '"', '<', '>','&#039;'), $string));<br />	}<br />	return $string;<br />}<br /><br />
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。