【问题标题】:Retrieve image <src> from rss feed从 rss 提要中检索图像 <src>
【发布时间】:2023-03-16 00:25:01
【问题描述】:

我想从 RSS 源获取 img src,但我只需要 &lt;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 内部内容,但我只需要 &lt;div class="image"&gt;img style="max-width:100%;" 内部的原始图像,而不需要其他额外的 favicon。请帮忙 - 我尝试了多种解决方案,但我无法修复。

【问题讨论】:

    标签: php xml rss feed rss-reader


    【解决方案1】:

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

    $entry-&gt;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>";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多