联系信息

php正则清除src属性外的所有html标签属性

2020-12-06 12:47 By 致远 143
当前位置: 企业网站建设 > ThinkPHP > php正则清除src属性外的所有html标签属性

采集数据,得到的内容往往很糟糕,诸如这个样子:


<p style="text-align: center; margin-top: 10px; margin-bottom: 10px; line-height: 1.5em;"><strong><span style="font-family: 宋体;letter-spacing: 0;font-size: 16px"><img src="/uploads/image/20180326/1522046288118199.jpg" title="1522046288118199.jpg" alt="微信图片_20180316100906.jpg"/></span></strong></p><p style="text-align: left; margin-top: 10px; margin-bottom: 10px; line-height: 1.5em;"><strong><span style="font-family: 宋体;letter-spacing: 0;font-size: 16px">一、组织机构<br/></span></strong></p><p style="margin: 10px 0px; text-indent: 2em; line-height: 1.5em;"><strong><span style="font-family: 宋体;letter-spacing: 0;font-size: 16px">主办单位:</span></strong></p><p style="margin: 10px 0px; text-indent: 2em; line-height: 1.5em;"><span style="font-family: 宋体;letter-spacing: 0;font-size: 16px">中国陶瓷工业协会</span></p>


这玩意好不处理直接存数据库弊端是很多的:

1、达到一定数量后数据库占用会非常非常大

2、数据库访问速度受影响

3、前端样式效果无法统一(用户体验差)

4、页面加载速度受影响

……

所有,需要处理后在输出,既满足用户体验又提高代码的相应速度,还能减小数据库的占用,一举多得!而处理这些乱七八糟的数据,正则替换就必不可少。

实话说,本人老菜,没能用一句话搞定,分开来处理,php清除src属性外的所有html标签属性的正则如下:


//第一步,处理所有不包含src的标签,当然如果你有其他属性要保留,需要再修改
$str=preg_replace('/(<[a-zA-Z]+)((?!src).)*?>/i',"$1>",$str);
//第二步,处理img标签并保留src属性
$str=preg_replace('/([a-zA-Z]+) (.*?)(src=".*?").*?>/i',"$1 $3>",$str);


未测试很多数据,只是刚刚想到就试了一下,过几天会处理大量数据,如果有问题,再来更新。效果如下图所示:

php正则清除src属性外的所有html标签属性演示效果


© 致远 2020-12-06,原创内容,转载请注明出错:php正则清除src属性外的所有html标签属性

留下您的评论

>