我有一个示例代码:
$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 -
,如何解决?
答案 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 />
),它可能是大写的,以及我现在想不到的其他问题。
额外信息: