我想匹配所有img
s表示:如何preg_match_all具有HTTP頭寬度> 100像素和高度> 80像素的圖像?
- 有擴展名之一:JPG | PNG | GIF
- 誰
src
不http://
- ,其寬度> 100和高度開始> 100
我開始用正則表達式:
preg_match_all("/(href|src)=([\"|']?)([^ \"'>]+\.(jpg|png|gif))\\2/i",$str,$matches);
我想匹配所有img
s表示:如何preg_match_all具有HTTP頭寬度> 100像素和高度> 80像素的圖像?
src
不http://
我開始用正則表達式:
preg_match_all("/(href|src)=([\"|']?)([^ \"'>]+\.(jpg|png|gif))\\2/i",$str,$matches);
正則表達式中的數字比較並不那麼簡單,而查找width =和height =屬性將需要更復雜的正則表達式。見regex tools
因此,這是一個更簡單的HTML解析器將有意義的情況之一。例如與QueryPath您可以使用:
foreach (qp($html)->find("img, a") as $img) {
if ($img->attr("width") >= 100 and ...) {
echo $img->attr("src"), $img->attr("href");
}
}
使用DOM文檔會更快
當然(也更打字。)
如果圖像標籤沒有寬度或高度屬性設置? – 2011-02-28 13:48:30
我寧願能解析這個問題的正則表達式。 – mario 2011-02-28 13:50:02
@尼克韋弗,我的圖片都有寬度或高度的屬性,謝謝。 – cj333 2011-02-28 13:52:32