我想要一个正则表达式模式来删除src属性为空的图像,例如:
$html = '<img src="adasas.jpg" /><br />asasas<br />sdfsdf<br /><img title="asa" src="" />';
或
$html = '<img src="adasas.jpg" /><br />asasas<br />sdfsdf<br /><a href="adafgag"><img title="asa" src="" /></a>';
如果<img
代码之间存在此<a>
,我还要删除所有代码(<a
和<img
)。
我在代码下面进行了测试,但它删除了所有$ html
echo preg_replace( '!(<a([^>]+)>)?<img(.*?)src=""([^>]+)>(</a>)?!si' , '' , $html );
有人可以帮帮我吗?
提前致谢
答案 0 :(得分:4)
您的问题可能是通用的.*?
匹配得太多了。而是像模式的其他部分一样使用[^>]*
:
'!(<a\s[^>]+>)?<img([^>]+)src=""([^>]*)>(</a>)?!i'