从Joomla文章中提取所有图像

时间:2012-02-17 03:32:42

标签: php joomla joomla1.5

我有这段代码从joomla的文章中提取第一张图片:

<?php preg_match('/<img (.*?)>/', $this->article->text, $match); ?>
<?php echo $match[0]; ?>

有没有办法提取文章中提供的所有图片,而不仅仅是一个?

2 个答案:

答案 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" 
        )

)