正则清除HTML标签但保留其中一部分标签

jerry PHP 2015年08月30日 收藏

很多时候我们正则清除HTML标签但总希望保留其中一部分标签
用asp语言实现

view plaincopyprint?在CODE上查看代码片派生到我的代码片
str="<a href=""a.htm"">a.htm</a><div>afefe</div>feaa<b>bbb</b>  
<a href=http://www.baidu.com id=""ggg"">ggg</a><abbr>测试</abbr>"  
Set re=new RegExp     
 re.IgnoreCase =true     
 re.Global=True     
 re.Pattern="(<(?!/?(a|p|b)(\s|>))[^>]*>)"     
 str=re.replace(str," ")     
 response.Write str

那正则也可以用在其他语言里实现里实现
用php语言实现如下:

view plaincopyprint?在CODE上查看代码片派生到我的代码片
$str='<a href="a.htm">a.htm</a><div>afefe</div>feaa<b>bbb</b><a href=http://www.baidu.com id="ggg">ggg</a><abbr>测试</abbr>';  
echo preg_replace('/(<(?!\/?(a|p|b)(\s|\>))[^>]*>)/', '', $str);   
?>

当然php有更简单的实现方法:

$str='<a href="a.htm">a.htm</a><div>afefe</div>feaa<b>bbb</b><a href=http://www.baidu.com id="ggg">ggg</a><abbr>测试</abbr>';  
echo strip_tags($str,'<b><a><p>');