【问题标题】:Extract all images from a Joomla article从 Joomla 文章中提取所有图像
【发布时间】:2012-02-17 03:32:41
【问题描述】:

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

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

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

【问题讨论】:

    标签: php joomla joomla1.5


    【解决方案1】:

    我可能首先建议不要使用正则表达式来解析 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')
    }
    

    【讨论】:

    • 我喜欢这种方法,因为我可以访问属性并且我让 xpath 完成这项工作。你也先回答,所以你赢了。谢谢
    • 只是提到我再次使用它。可惜我不能再喜欢了:P
    【解决方案2】:

    使用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" 
            )
    
    )
    

    【讨论】:

    • @Alexander 的方法更适合解析 HTML。
    • 呵呵,我回来用这个。很好,但是如果图像具有属性 id 不会在数组 [1][0] 处清除它们
    猜你喜欢
    • 1970-01-01
    • 2015-01-18
    • 2014-04-13
    • 2018-11-15
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 2013-08-19
    • 2023-03-04
    相关资源
    最近更新 更多