正在用PHP写一个过滤HTML的函数,如果有HTML标签就把常用的几个属性提取出来(比如:style,class,href,target,alt)其他的则不要。
比如:
<strong class="123" style="white-space: normal;" onload="asdasdas()">12313123 </strong>
不需要onload="asdasdas()",只需要下面部分
<strong class="123" style="white-space: normal;">12313123 </strong>
像:
<strong onload="asdasdas()">eeeeee </strong>
只需要下面部分
<strong>eeeeee </strong>
下面是在写的代码,达不到预期,请教解决方法
$html = '<strong style="white-space: normal;" class="123" onload="asdasdas()"> </strong><div class="ccc">aaaaa</div>
<p style="white-space: normal;">bbbbb</p>
<strong class="123" style="white-space: normal;" onload="asdasdas()">12313123 </strong>
<strong onload=\'asdasdas()\'>eeeeee </strong><a href="http://www.xxx.com" target="_blank" class="aaaa">链接链接</a><p>ffff</p>';
$pattern = '/<([a-z]+)( style=".*?"| class=".*?"| href=".*?"| target=".*?"| alt=".*?"){0,5}.*?>/i';
$replacement = '<$1$2>';
$result = preg_replace($pattern, $replacement, $html);
echo $result;
结果:
<strong class="123"> </strong><div class="ccc">aaaaa</div>
<p style="white-space: normal;">bbbbb</p>
<strong style="white-space: normal;">12313123 </strong>
<strong>getURL() </strong><a class="aaaa">链接链接</a><p>ffff</p>
代码
点击查看匹配
https://hiregex.com/r/HXNER1/1