RegEx:删除

时间:2011-05-26 08:36:36

标签: php regex

我想要一个正则表达式模式来删除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 );

有人可以帮帮我吗?

提前致谢

1 个答案:

答案 0 :(得分:4)

您的问题可能是通用的.*?匹配得太多了。而是像模式的其他部分一样使用[^>]*

'!(<a\s[^>]+>)?<img([^>]+)src=""([^>]*)>(</a>)?!i'