首页 文章

从rss feed中检索图像<src>

提问于
浏览
0

我想从RSS提要获取img src,但我只需要 <div class="img" 中的图像而不是任何其他 class="favicon" img src . 但当我得到图像时,它会返回图标 . 我该如何解决?这是供稿链接“http://rss.disp.cc/PttHot.xml” . 这是我的代码:

<?php 
    $ptt = simplexml_load_file('http://rss.disp.cc/PttHot.xml');
    foreach ($ptt->entry as $entry ) {
    $content  = $entry -> content;
    preg_match('/<img.+src=[\'"](?P<src>.+?)[\'"].*>/i', $content, $images);
   if(!empty($images)){$img = $images[1];}else{$img="";}?>

我试图从内容中获取图像,这里有多个 img src 内容,但我只需要 <div class="image">img style="max-width:100%;" 内的原始图像而不是其他额外的图标 . 请帮助 - 我尝试了多种解决方案,但我无法修复 .

1 回答

  • 0

    也许您可以使用xpath表达式而不是使用DOMDocument的正则表达式 .

    $entry->content 包含html,因此您可以使用loadHTML加载它 .

    然后你可以使用xpath表达式来获取 img 标签:

    //div[contains(@class, 'img')]/img[contains(@style, 'max-width:100%') and not(contains(@class,'favicon'))]

    例如:

    $ptt = simplexml_load_file('http://rss.disp.cc/PttHot.xml');
    $doc = new DOMDocument();
    foreach ($ptt->entry as $entry) {
        $internalErrors = libxml_use_internal_errors(true);
        $doc->loadHTML((string)$entry->content);
        libxml_use_internal_errors($internalErrors);
        $xpath = new DOMXpath($doc);
        $items = $xpath->query("//div[contains(@class, 'img')]/img[contains(@style, 'max-width:100%') and not(contains(@class,'favicon'))]");
        foreach ($items as $item) {
            $img = $item->getAttribute('src');
            echo $img . "<br>";
        }
    }
    

相关问题