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:
src
不以http://
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”])
进行筛选。