从rss feed中检索图像<src>

时间:2017-11-18 20:15:55

标签: php xml rss feed rss-reader

我想从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 :(得分: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>";
    }
}