php
  • regex
  • 2011-05-26 79 views 4 likes 
    4

    我希望有一個正則表達式模式,以去除src屬性是空的圖像,例如:正則表達式:除去<img which src attribute is empty

    $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>'; 
    

    如果<a>標籤之間存在此<img,我想也刪除所有(<a<img)。

    我測試下面的代碼,但它刪除了所有HTML $

    echo preg_replace('!(<a([^>]+)>)?<img(.*?)src=""([^>]+)>(</a>)?!si' , '' , $html); 
    

    的任何人可以幫助我嗎?

    在此先感謝

    +3

    不建議使用正則表達式處理HTML。請參閱[this](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags)問題。 – Ikke 2011-05-26 08:40:32

    +0

    @Ikke:我正要鏈接到相同的問題... – Boldewyn 2011-05-26 08:42:12

    +0

    這是真的,但我希望這爲我的門戶網站刪除假圖像,我認爲這一點,XML解析器是不需要的,因爲我只是想這個!你能幫我解決這個正則表達式? – 2011-05-26 08:43:55

    回答

    4

    你的問題很可能是通用.*?匹配太多。而是使用[^>]*像在該模式的其他部分:

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

    謝謝你,你太棒了! – 2011-05-26 09:05:08

    +0

    工作得很好,正則表達式的tnx,只有我遇到的問題是格式錯誤的img標籤,如' Nemke 2012-07-19 11:00:19

    相關問題