我有这段代码从joomla的文章中提取第一张图片:
<?php preg_match('/<img (.*?)>/', $this->article->text, $match); ?>
<?php echo $match[0]; ?>
有没有办法提取文章中提供的所有图片,而不仅仅是一个?
答案 0 :(得分:2)
我建议首先不要使用正则表达式来解析HTML。您应该使用appropiate parser,例如使用libxml的DOMDocument::loadHTML。
然后您可以查询所需的标记。这样的事可能有用(未经测试):
$doc = new DOMDocument;
$doc->loadHTML($htmlSource);
$xpath = new DOMXPath($doc);
$query = '//img';
$entries = $xpath->query($query);
foreach ($entries as $entry) {
// $entry->getAttribute('src')
}
答案 1 :(得分:1)
使用preg_match_all。并且你想要像这样修改模式,以考虑img标签内的尾随'/'。
$str = '<img src="asdf" />stuff more stuff <img src="qwerty" />';
preg_match_all('/<img (.*?)\/>/', $str, $matches);
print_r($matches);
Array
(
[0] => Array
(
[0] => <img src="asdf" />
[1] => <img src="qwerty" />
)
[1] => Array
(
[0] => src="asdf"
[1] => src="qwerty"
)
)