我試圖找到img
標籤,其中不包含alt
屬性,所以要解決它的W3C驗證。負面查詢preg_match_all PHP中的IMG標籤沒有ALT屬性
我試圖使用負環視語法:
preg_match_all('@<img[^>]*?(?!alt=)[^>]*>@', $text, $matches);
不幸的是不返回任何東西,同時有img
標籤不alt
屬性是肯定的。
我認爲問題是出在負查找,但是例如我用:
preg_match_all('@<img[^>]+?http:\/\/(?!mysite\.com)[^>]*?>@', $text, $matches);
尋找外部資源的圖像和它工作得很好。
任何想法第一個表達式有什麼問題? 謝謝!
**請勿使用正則表達式來解析HTML **。您無法可靠地使用正則表達式解析HTML。只要HTML從你的期望改變,你的代碼就會被破壞。有關如何使用PHP模塊正確解析HTML的示例,請參閱http://htmlparsing.com/php.html。 – 2013-02-14 22:15:41
我不會在生產環境中使用simple_html_dom,因爲它有內存泄漏。這就是爲什麼我前一陣子拒絕了,現在就使用nokogiri。這真的取決於是否使用正則表達式爲我的目的,我認爲這將適合罰款。 – Volder 2013-02-14 22:26:56