У меня есть следующий фрагмент кода:
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
Эта часть не регистрируется. В фактическом фиде тег указан как <content:encoded>
но я не могу его загрузить. Какие-либо предложения?
В <content:encoded>
content
– это пространство имен и encoded
– это имя тега.
Вы должны использовать SimpleXMLElement::children
. См. Вывод
var_dump($entry->children("content", true));
Название тега здесь «закодировано». Попробуй это:
$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); }
Я предлагаю вам следующий код:
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>"; }
Надеюсь, что это работает для вас.
…. Пример PHP
<?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++; } // -------------------------------------------------------------------- ?>
если вы хотите увидеть исходный код HTML-кода контента в своем браузере, используйте, например:
print '<pre style="background:#DEDEDE">'. htmlentities($e_encoded) .'</pre>'."\n";
знак равно