如何preg_match_all http头宽度> 100px且高度> 80px的图像?

时间:2011-02-28 13:45:36

标签: php html regex html-parsing

我希望匹配所有img

  1. 有一个扩展名:jpg | png | gif
  2. src不以http://
  3. 开头
  4. 谁的宽度> 100和高度> 100
  5. 我从这个正则表达式开始:

    preg_match_all("/(href|src)=([\"|']?)([^ \"'>]+\.(jpg|png|gif))\\2/i",$str,$matches);
    

1 个答案:

答案 0 :(得分:1)

正则表达式中的数字比较并不那么简单,找到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");
    }
}

当然使用DOMDocument会更快(也更多的打字......)