我正在尝试获取页面中所有图像的src。但是有些页面使用绝对路径而有些页面没有。所以我想知道最好的方法是什么?
现在我正在使用它。
$imgsrc_regex = '#<\s*img [^\>]*src\s*=\s*(["\'])(.*?)\1#im';
preg_match_all($imgsrc_regex, $html, $matches);
例如,网页a可能将图像设为src =“xyz.png”,而其他人可能会使用 src =“b.com/xyz.png”所以有必要在必要时自动附加网址吗?
答案 0 :(得分:3)
最好的方式(imo)是使用DOMDocument和DOMXPath来获取网址:
$dom=new domDocument;
$dom->loadHTML($html);
和
$xpath = new DOMXPath($dom);
$result = $xpath->query("//img/@src");
Using regex to parse HTML is bad.
或者你必须澄清你的问题,你真正想要的是什么。您是否只想获得绝对的图片网址?如果是,您可以检查它们是否以http:
开头:
$result = $xpath->query("//img[starts-with(@src, 'http:') or starts-with(@src, 'HTTP:')]/@src");
答案 1 :(得分:0)
Use a HTML Parser, not a regular expression
说真的,在HTML中搜索标签是正则表达式的错误问题域。