Heim  >  Artikel  >  Backend-Entwicklung  >  php 正则表达式含意

php 正则表达式含意

WBOY
WBOYOriginal
2016-06-13 12:56:081031Durchsuche

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 />
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn