w3school samples quiz program poll codes php rss

samples - quiz de php



PHP-Creador de RSS (6)

Hay muchas cosas que pueden hacer XML malformado. Podría ser un problema con las entidades de caracteres (a ''<'', ''>'' o ''&'' en los datos entre las etiquetas XML). Intente ejecutar cualquier salida desde una base de datos a través de htmlentities () cuando concatena la cadena. ¿Tiene un ejemplo del XML generado para que podamos verlo y podamos ver dónde está el problema?

Tengo un sitio web antiguo que genera su propio RSS cada vez que se crea una nueva publicación. Todo funcionó cuando estaba en un servidor con PHP 4 pero ahora que el host cambia a PHP 5, siempre tengo un "XML mal formado". Estaba usando xml_parser_create () y xml_parse (...) y fwrite (..) para guardar todo.

Aquí está el ejemplo al guardar (Leo antes de guardar para agregar una línea de RSS anterior, por supuesto).

function SaveXml() { if (!is_file($this->getFileName())) { //Création du fichier $file_handler = fopen($this->getFileName(),"w"); fwrite($file_handler,""); fclose($file_handler); }//Fin du if //Header xml version="1.0" encoding="utf-8" $strFileData = ''<?xml version="1.0" encoding="iso-8859-1" ?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>''.$this->getProjectName().''</title><link>http://www.mywebsite.com</link><description>My description</description><lastBuildDate>'' . date("r"). ''</lastBuildDate>''; //Data reset($this->arrData); foreach($this->arrData as $i => $value) { $strFileData .= ''<item>''; $strFileData .= ''<title>''. $this->GetNews($i,0) . ''</title>''; $strFileData .= ''<pubDate>''. $this->GetNews($i,1) . ''</pubDate>''; $strFileData .= ''<dc:creator>''. $this->GetNews($i,2) . ''</dc:creator>''; $strFileData .= ''<description><![CDATA[''. $this->GetNews($i,3) . '']]> </description>''; $strFileData .= ''<link><![CDATA[''. $this->GetNews($i,4) . '']]></link>''; $strFileData .= ''<guid>''. $this->GetNews($i,4) . ''</guid>''; //$strFileData .= ''<category>''. $this->GetNews($i,5) . ''</category>''; $strFileData .= ''<category>Mycategory</category>''; $strFileData .= ''</item>''; }//Fin du for i $strFileData .= ''</channel></rss>''; if (file_exists($this->getFileName()))//Détruit le fichier unlink($this->getFileName()); $file_handler = fopen($this->getFileName(),"w"); fwrite($file_handler,$strFileData); fclose($file_handler); }//Fin de SaveXml

Mi pregunta es: ¿cómo creas y llenas tu RSS en PHP?



No es una respuesta completa, pero no es necesario analizar su propio XML. Hará daño al rendimiento y la confiabilidad.

Pero definitivamente asegúrate de que esté bien formado . No debería ser muy difícil si lo genera a mano o usa herramientas de uso general. ¿O tal vez tu HTML incluido lo arruina?


Yo usaría simpleXML para crear la estructura requerida y exportar el XML. Luego lo almacenaría en caché en el disco con file_put_contents ().


En swcombine.com usamos Feedcreator . Usa ese y tu problema desaparecerá. :)

Aquí está el código PHP para usarlo una vez instalado:

function feed_simnews() { $objRSS = new UniversalFeedCreator(); $objRSS->title = ''My News''; $objRSS->link = ''http://link.to/news.php''; $objRSS->description = ''daily news from me''; $objRSS->xsl = ''http://link.to/feeds/feedxsl.xsl''; $objRSS->language = ''en''; $objRSS->copyright = ''Copyright: Mine!''; $objRSS->webmaster = ''[email protected]''; $objRSS->syndicationURL = ''http://link.to/news/simnews.php''; $objRSS->ttl = 180; $objImage = new FeedImage(); $objImage->title = ''my logo''; $objImage->url = ''http://link.to/feeds/logo.jpg''; $objImage->link = ''http://link.to''; $objImage->description = ''Feed provided by link.to. Click to visit.''; $objImage->width = 120; $objImage->height = 60; $objRSS->image = $objImage; //Function retrieving an array of your news from date start to last week $colNews = getYourNews(array(''start_date'' => ''Last week'')); foreach($colNews as $p) { $objItem = new FeedItem(); $objItem->title = $p->title; $objItem->description = $p->body; $objItem->link = $p->link; $objItem->date = $p->date; $objItem->author = $p->author; $objItem->guid = $p->guid; $objRSS->addItem($objItem); } $objRSS->saveFeed(''RSS2.0'', ''http://link.to/feeds/news.xml'', false); };

Bastante BESO. :)


PHP5 ahora viene con la extensión SimpleXML , es una forma bastante rápida de crear XML válido si sus necesidades no son complicadas.

Sin embargo, el problema que está sugiriendo no parece ser un problema de implementación más un problema de sintaxis. Quizás podría actualizar su pregunta con un ejemplo de código o una copia del XML que se produce.