如何在宽度> = 300的情况下使用正则表达式IMG?

yul*_*ika 3 php regex html-parsing

我怎样才能获得所有的<img>s width >= 300

我的标记/代码:

$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;
Run Code Online (Sandbox Code Playgroud)

我的尝试:

preg_match_all("/<img(.*?) \/>/",$images,$matches);
print_r($matches);
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 6

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

这适用于您的特定示例,但它有许多问题,因为正则表达式无法正确解析HTML:

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

看到它在线工作:ideone

我建议你改为寻找一个HTML解析器.

有关

  • 如果这是扫描的唯一html,解析器不会有点沉重吗? (2认同)