我有一个示例代码:
$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 -
,如何解决?
我有一个示例代码:
$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 -
,如何解决?
为此编写正则表达式是……至少可以说是有问题的。我建议使用这个:
$dom = new DOMDocument;
$dom->loadHTML($content);
foreach ($dom->getElementsByTagName('img') as $node) {
echo $node->getAttribute('src') . PHP_EOL;
}
解释:
您不应该将正则表达式用于您想要的原因是 HTML 的标记各不相同。属性的位置src
可以不同,它可能使用单引号而不是双引号(一些HTML属性不需要引号,例如这个语法是正确的<img class=logo />
:),它可能是大写的,可能还有其他我想不到的问题现在的。
额外信息: