2010-11-10 50 views
1

我打算處理每個html文件的img。這些圖片不得包含「noresize」字樣。 我建的正則表達式來獲得IMG:正則表達式,在HTML文件中獲取沒有「noresize」標籤的img

#<img(\s[^>]*)>#ie 

這是合作得非常好,但我怎麼也找不到指定「無noresize」。

我想類似的東西:

#<img(\s[^>]*)((?!noresize).)>#ie 

但很明顯,這不是我所需要的...

任何想法? 朱利安

+2

不應該使用正則表達式來解析HTML。 – 2010-11-10 19:14:19

+0

您應該使用[DOM解析器](http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/3577662#3577662)來瀏覽HTML,並乾淨地提取您想要的元素。 – 2010-11-10 19:15:08

+0

儘管如此,歡迎來到SO。使用正則表達式解析HTML會引起這種反應。儘管如此,使用DOM解析器確實是最好的想法。 – 2010-11-10 19:16:16

回答

0

這是使用XPath,我認爲這將是一個更好的解決你的問題。)

//img[not(@resize*) 
0

如果你已經成功地捕捉你的正則表達式的IMG標籤爲什麼不只是運行一個小像stripos($tag, 'noresize') === false這樣的每場比賽後處理 - 當然這也會錯誤地檢測像noresize.jpg這樣的圖像名稱。

或者,只是使用和HTML/DOM解析器像一個正常的人:

http://us.php.net/manual/en/domdocument.loadhtml.php

0

像這樣的事情?

'/<img(((?!noresize)[^>])*)>/ie'