【问题标题】:get content:encoded from RSS feed获取内容:从 RSS 提要编码
【发布时间】:2012-11-16 02:55:37
【问题描述】:

我正在使用它来解析来自 rss 提要的内容:

$rss = new DOMDocument();
$rss->load($feedurl);
$feed = array();
foreach ($rss->getElementsByTagName('item') as $node) {
    $item = array(
        'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
        'content' => $node->getElementsByTagName('content:encoded')
            ->item(0)->nodeValue,
        'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
        'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
        'guid' => $node->getElementsByTagName('guid')->item(0)->nodeValue,
    );
    array_push($feed, $item);
}
$limit = 1;
for ($x = 0; $x < $limit; $x++) {
    $title   = str_replace(' & ', ' &amp; ', $feed[$x]['title']);
    $link    = $feed[$x]['link'];
    $content = $feed[$x]['content'];
    $guid    = $feed[$x]['guid'];
}

并将内容分配给变量。

除了一个之外,所有这些都在工作。为什么是这样?

请有人帮我解决这个问题:)

【问题讨论】:

标签: php parsing rss feed


【解决方案1】:

遇到类似问题,我点击了fortytwo 提到的链接 并发现 this answer 没有像显示的那样工作(将提交对该答案的编辑),尽管通过一些小的编辑,我能够让它按需要工作。这让它变得超级简单。

<?php
$xml=("https://en.blog.wordpress.com/feed/");


function getFeed($feed_url) {
        $feeds = file_get_contents($feed_url);
        $feeds = str_replace("<content:encoded>","<contentEncoded>",$feeds);
        $feeds = str_replace("</content:encoded>","</contentEncoded>",$feeds);
        $rss = simplexml_load_string($feeds);

    echo "<ul>";
    $x=$rss;
        foreach($x->channel->item as $entry) {
            echo "<li><a href='$entry->link' title='$entry->title'>" . $entry->title . "</a></li>";
            echo "<li>$entry->contentEncoded</li>";
        }
    echo "</ul>";
}

getFeed($xml);

【讨论】:

    【解决方案2】:

    代码 PHP 如果你想从 feed rss 获取数据:

       <?php
            $invalidurl = false;
            if(@simplexml_load_file($url)){
    
               $feeds = file_get_contents($url);
            $feeds = str_replace("<content:encoded>","<contentEncoded>",$feeds);
            $feeds = str_replace("</content:encoded>","</contentEncoded>",$feeds);
            $feeds = simplexml_load_string($feeds);
    
    
    
              //  $feeds = simplexml_load_file($feeds);
            }else{
                $invalidurl = true;
                echo "<h2>Invalid RSS feed URL.</h2>";
            }
    
    
            $i=0;
            if(!empty($feeds)){
              
                $site = $feeds->channel->title;
                $sitelink = $feeds->channel->link;
                echo '<h1>'.$site.'</h1><div class="row">';
                foreach ($feeds->channel->item as $item) {
    
                    $title = $item->title;
                    $link = $item->link;
                    $description = $item->description;
                    $postDate = $item->pubDate;
                    $content = $item->contentEncoded;
                    $pubDate = date('D, d M Y',strtotime($postDate));
    
                    if($i>=20) break;      
            
     ?>         
               <div class="col-12 p-3 GeetMark-col">
                      <div class="p-1">
                        <div class="row">
                          <div class="col-sm-5 col-md-4">
                            <div class="position-relative h-sm-100"><a class="d-block h-100" href="<?= $link ?>"><img class="img-fluid fit-cover w-sm-100 h-sm-100 rounded absolute-sm-centered" src="<?= $meta_img ?>" alt="<?= $title ?>" /></a></div>
                          </div>
                          <div class="col-sm-7 col-md-8 GeetMark-col-sm">
                            <div class="">
                               
                                <h5 class="mt-3 mt-sm-0"><a class="text-dark fs-0 fs-lg-1" href="<?= $link ?>"><?= $title ?></a></h5>
                                <span class="notification-time"><span class="mr-1" role="img" aria-label="Emoji">?</span><?= $pubDate ?> </span>
                                <p class="fs--1 mb-2 mb-md-3"> <?= $description ?> </p>
                                <hr>
                                <p class="fs--1 mb-2 mb-md-3"> <?= $content ?> </p>
                                 
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>      
       <?php
                    $i++;
                }
                echo "</div>";
            }else{
                if(!$invalidurl){
                    echo "<h2>No item found</h2>";
                }
            }
          ?> 
    

    exemple

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-03
      相关资源
      最近更新 更多