PHP正则表达式过滤html标签属性(DEMO)
过滤html标签在php中可以有内置的函数了,但它过滤的太干净了,我们就整理了一下些利用正则来过滤指定html标签的例子,具体如下所示。
采集的时候有时候需要过滤掉多余的标签属性,比如img标签过滤掉除了src属性之外的所有属性例如删除titilealt等属性以及一些脚的onclick属性等。
例如
过滤除了src之外的所有属性:
$str=preg_replace('/\s(?!src)[a-zA-Z]+=[\'\"]{1}[^\'\"]+[\'\"]{1}/iu','$str);
上面的实例代码是过滤掉除了src属性外的所有标签属性.
过滤设置过滤除了alt和src之外的所有属性
代码如下:
$str=preg_replace('/\s(?!(src|alt))[a-zA-Z]+=[^\s]*/iu','',$str);
过滤所有html标签的属性的正则表达式:
$str=preg_replace("/<([a-z]+)[^>]*>/i","",$str);
只过滤alt属性的正则表达式:
(\s)alt=[^\s]*
过滤所有html标签的属性的正则表达式:
$search=array("'<script[^>]*?>.*?</script>'si",//去掉javascript
"'<[\/\!]*?[^<>]*?>'si",//去掉HTML标记
"'([\r\n])[\s]+'",//去掉空白字符
"'&(quot|#34);'i",//替换HTML实体
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
"'&(nbsp|#160);'i"
);//作为PHP代码运行
$replace=array("","","\\1","\"","&","<",">","");
$html=preg_replace($search,$replace,$html);