Retrieving RSS feed with tag

后端 未结 5 1692
北恋
北恋 2020-12-05 17:58

I have the following snippet of code:

function getFeed($feed_url) {

$content = file_get_contents($feed_url);
$x = new SimpleXmlElement($content);

echo \"&l         


        
相关标签:
5条回答
  • 2020-12-05 18:32

    The Tag name here is "encoded". Try this:

    $url = 'put_your_feed_URL';
    
        $rss = new DOMDocument();
        $rss->load($url);
        $feed = array();
        foreach ($rss->getElementsByTagName('item') as $node) {
            $item = array (
                    'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
                    'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
                    'pubDate' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
                    'description' => $node->getElementsByTagName('description')->item(0)->nodeValue,
                    'content' => $node->getElementsByTagName('encoded')->item(0)->nodeValue
    
                    );
            array_push($feed, $item);
        }
    
    0 讨论(0)
  • 2020-12-05 18:35

    .... PHP example

    <?php 
    // --------------------------------------------------------------------
    
    $feed_url = 'http://www.tagesschau.de/xml/rss2'; 
    $xml_data = simplexml_load_file($feed_url);
    
    // -------------------------------------------------------------------- 
    
    $i=0; 
    foreach($xml_data->channel->item as $ritem) { 
    
    // -------------------------------------- 
    
    $e_title       = (string)$ritem->title; 
    $e_link        = (string)$ritem->link; 
    $e_pubDate     = (string)$ritem->pubDate; 
    $e_description = (string)$ritem->description; 
    $e_guid        = (string)$ritem->guid; 
    
    $e_content     = $ritem->children("content", true);
    $e_encoded     = (string)$e_content->encoded; 
    
    $n = ($i+1);
    
    // -------------------------------------- 
    
    print '<p> ---------- '. $n .' ---------- </p>'."\n";
    
    print "\n"; 
    print '<div class="entry" style="margin:0 auto; padding:4px; text-align:left;">'."\n"; 
    print '<p> Title: '. $e_title .'</p>'."\n"; 
    print '<p> Link:  '. $e_link .'</p>'."\n"; 
    print '<p> Date:  '. $e_pubDate .'</p>'."\n"; 
    print '<p> Desc:  '. $e_description .'</p>'."\n"; 
    print '<p> Guid:  '. $e_guid .'</p>'."\n"; 
    print '<p> Content: </p>'."\n"; 
    print '<p style="background:#DEDEDE">'. $e_encoded .'</p>'."\n"; 
    print '</div>'."\n"; 
    
    
    // -------------------------------------- 
    
    print '<br />'."\n"; 
    print '<br />'."\n";
    
    $i++; 
    } 
    
    // -------------------------------------------------------------------- 
    ?>
    

    if you want to see the content HTML Source Code in your Browser, use eg:

    print '<pre style="background:#DEDEDE">'. htmlentities($e_encoded) .'</pre>'."\n";
    

    :=)

    0 讨论(0)
  • 2020-12-05 18:46

    I'll suggest you the following code:

    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>";
            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>";
        }
    

    Hope this works for you.

    0 讨论(0)
  • 2020-12-05 18:49

    The working answer for this is just:

    $e_content = $entry->children("content", true);
    $e_encoded = (string)$e_content->encoded;
    
    0 讨论(0)
  • 2020-12-05 18:52

    In <content:encoded>, content is the namespace and encoded is the tag name.

    You have to use SimpleXMLElement::children. See the output of

    var_dump($entry->children("content", true));
    
    0 讨论(0)
提交回复
热议问题