检索带有标记的 RSS 源<内容:编码>

2022-08-30 16:15:48

我有以下代码片段:

function getFeed($feed_url) {

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

echo "<ul>";

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

echo "</ul>";
}

它的工作原理除了$entry->content

该部分未注册。在实际的 Feed 中,标签被列为,但我无法让它成为 Feed。有什么建议吗?<content:encoded>


答案 1

此处的标记名称是“编码的”。试试这个:

$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);
    }

答案 2

在 中 是命名空间,并且是标记名称。<content:encoded>contentencoded

你必须使用SimpleXMLElement::children。查看输出

var_dump($entry->children("content", true));

推荐