获取页面中的所有图像绝对路径?

时间:2010-06-01 05:25:17

标签: php regex

我正在尝试获取页面中所有图像的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”所以有必要在必要时自动附加网址吗?

2 个答案:

答案 0 :(得分:3)

最好的方式(imo)是使用DOMDocumentDOMXPath来获取网址:

$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中搜索标签是正则表达式的错误问题域。