【问题标题】:How to regex IMG where width >= 300?如何在宽度> = 300的情况下正则表达式IMG?
【发布时间】:2011-12-21 15:10:23
【问题描述】:

如何使用width >= 300 获取所有<img>s?

我的标记/代码:

$images = <<<END
<img src="/data/img/201108031_023" width="300" height="400" />
<img src="/data/img/201108031_026" width="250" height="300" />
<img src="/data/img/201108031_028" width="400" height="300" />
<img src="/data/img/201108031_032" width="500" height="400" />
...
END;

我的尝试:

preg_match_all("/<img(.*?) \/>/",$images,$matches);
print_r($matches);

【问题讨论】:

    标签: php regex html-parsing


    【解决方案1】:

    为此使用正则表达式不是一个好主意。

    这适用于您的具体示例,但存在许多问题,因为正则表达式无法正确解析 HTML:

    "/<img[^>]*width=\"([3-9][0-9]{2}|[1-9][0-9]{3,})\"[^>]*>/"
    

    在线查看:ideone

    我建议您改用 HTML 解析器。

    相关

    【讨论】:

    • 如果这确实是唯一要扫描的 html,解析器会不会有点重?
    • 好的,谢谢mark,这是正则表达式的最佳方式,我会尝试使用html解析器。
    【解决方案2】:
    "/<img[^>]*width=\"[0-9]*[3-9][0-9]{2}\"[^>]*\/>/"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 2021-04-30
      • 2022-11-14
      相关资源
      最近更新 更多