使用php从第一张图片获取src时出错?

时间:2012-12-07 04:28:55

标签: php

我有一个示例代码:

$content = 'I have a image <img border="0" alt="581.jpg - 58.03 KB" src="581.jpg">';

和php

preg_match('/<img.+src=[\'"](?P<src>.+)[\'"].*>/i', $content, $image);
echo $image[0];

结果是:581.jpg" border="0" alt="581.jpg -,如何解决?

1 个答案:

答案 0 :(得分:1)

为此编写正则表达式至少可以说是有问题的。我建议使用这个:

$dom = new DOMDocument;
$dom->loadHTML($content);
foreach ($dom->getElementsByTagName('img') as $node) {
    echo $node->getAttribute('src') . PHP_EOL;
}

<强>解释

您不应该使用正则表达式的原因是HTML的标记会有所不同。 src属性的位置可能不同,它可能使用单引号而不是双引号(某些HTML属性不需要引号,例如此语法是正确的:<img class=logo />),它可能是大写的,以及我现在想不到的其他问题。

额外信息: