samples - quiz de php
Recuperando fuente RSS con etiqueta<contenido: codificado> (5)
.... ejemplo de 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++;
}
// --------------------------------------------------------------------
?>
Si desea ver el código fuente HTML del contenido en su navegador, use por ejemplo:
print ''<pre style="background:#DEDEDE">''. htmlentities($e_encoded) .''</pre>''."/n";
: =)
Tengo el siguiente fragmento de código:
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>";
}
Funciona EXCEPTO el $entry->content
Esa parte no se registra. En la fuente real, la etiqueta aparece como <content:encoded>
pero no puedo obtenerla. ¿Alguna sugerencia?
En <content:encoded>
, content
es el namespace y encoded
es el nombre de la etiqueta.
Tienes que usar SimpleXMLElement::children
. Ver la salida de
var_dump($entry->children("content", true));
La respuesta de trabajo para esto es solo:
$e_content = $entry->children("content", true);
$e_encoded = (string)$e_content->encoded;
Te sugiero el siguiente código:
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>";
}
Espero que esto funcione para usted.
El nombre de la etiqueta aquí está "codificado". Prueba esto:
$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);
}