求一个PHP正则表达式把html中的所有标签属性全部去掉
一、用CMS系统的时候,直接粘贴文章会带有很多没有的垃圾标签或者属性,所以我需要把html中的所有标签属性全部去掉,除了img标签的alt和src属性保留。
自己写了个,感觉不到位:
//这个地方不知道怎么写,过滤所有标签的属性,除img的src和alt $html=preg_replace("/<([a-zA-Z]+)[^>]*>/","<\1>",$html);
这个会把全部的都换掉,但是img的我不能按照我想要的那样,求大神。
二、然后还有个就是table标签,比如:
<table......属性一大堆> <tr...属性一大堆><td>1.</td><td><span>随便一些字</span></td></td> <tr...属性一大堆><td>2.</td><td><span>随便一些字</span></td></td> </table>
我想整理后得到这样:
<p> 1.<span>随便一些字</span> 2.<span>随便一些字</span> </p>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(14)
嗯,是的,这个确实有点强大。
使用起来还是比较简单的。这个是做html文档标准化的。可以防止各种各样的xss代码。
htmlpurifier.org 我们的蝉知
建站系统的html标准化使用的就是这套类库。功能相当强大。
解决了,谢谢大家,也贴出来,后面大家碰到可以用,两个解决方法
一个是:使用这个组件,http://stackoverflow.com/questions/9897214/how-to-strip-specific-tags-and-specific-attributes-from-a-string
二个是:使用php函数strip_tags这个方法,第二个参数可以带你不想要过滤的标签
比如:
引用来自“Liuxd”的评论
https://github.com/liuxd/CodeSnippets/blob/master/PHP/XssFilter.php
试试这个。
怎么解析dom?
正则不是很熟啊,这种情况如果是我会解析dom然后重新生成!
大神呢
这个代码我试了下,好像不行
哦?php内置的什么方法,还这不知道
strip_tags这个方法是可以,但会全部干掉,但是我要保留img标签怎么破,还有a标签的title属性之类的
明白了,这个函数还有第二个参数
为什么要用正则 PHP 有过滤方法呀 内置的