1

我有一个示例代码:

$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 -,如何解决?

4

1 回答 1

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 />:),它可能是大写的,可能还有其他我想不到的问题现在的。

额外信息:

于 2013-05-30T12:48:05.370 回答