Home > Backend Development > PHP Tutorial > php 正则表达式含意

php 正则表达式含意

WBOY
Release: 2016-06-13 12:56:08
Original
1060 people have browsed it

php 正则表达式含义
$string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/', '&\\1',
str_replace(array('&', '"', ''), array('&', '"', '<', '>'), $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 />
Copy after login
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template