Php 如何预匹配所有具有http头宽度的图像>;100px和高度>;80像素?

Php 如何预匹配所有具有http头宽度的图像>;100px和高度>;80像素?,php,html,regex,html-parsing,Php,Html,Regex,Html Parsing,我想匹配所有imgs: 有一个扩展名:jpg | png | gif 其src不以http:// 其宽度>100且高度>100 我从这个正则表达式开始: preg_match_all("/(href|src)=([\"|']?)([^ \"'>]+\.(jpg|png|gif))\\2/i",$str,$matches); 正则表达式中的数值比较并不是那么简单,而查找width=和height=属性需要一种更复杂的正则表达式。看 因此,这是使用更简单的HTML解析器的情况之一。例如,您可

我想匹配所有
img
s:

  • 有一个扩展名:jpg | png | gif
  • src
    不以
    http://
  • 其宽度>100且高度>100
  • 我从这个正则表达式开始:

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

    正则表达式中的数值比较并不是那么简单,而查找width=和height=属性需要一种更复杂的正则表达式。看

    因此,这是使用更简单的HTML解析器的情况之一。例如,您可以使用:

    foreach (qp($html)->find("img, a") as $img) {
        if ($img->attr("width") >= 100 and ...) {
            echo $img->attr("src"), $img->attr("href");
        }
    }
    

    当然,使用DOMDocument会更快(而且打字也会更多)

    如果图像标记没有设置宽度或高度属性怎么办?我更喜欢可以解析这个问题的正则表达式。@Nick Weaver,我的图像都有宽度或高度属性,谢谢。谢谢,但是使用
    $html->find(“img,a”)
    无法匹配图像是否为
    http
    begain,可能它们类似于“../imgaes/1.jpg`实际上,此脚本仅转储src或href属性的值。它“不在乎它是相对路径还是以https开头…@cj333添加额外的
    if
    以获取更多规则,或者使用
    ->find('img[src^=“http”])
    进行筛选。