









Note : Ces scripts sont pour le format RSS 2.0
Cette version n'utilise pas le dom, elle à le mérite d'être simple à comprendre et a mettre en place mais n'ai pas réellement optimisé et propre.
function updateRss($myFeed,$myTitle,$myLink,$myDesc) { //on converti les entrées en utf8 $myttile=utf8_encode($myTitle); $myLink=utf8_encode($myLink); $myDesc=utf8_encode($myDesc); //on créé le noeud $newNode="<item> <title>".$myTitle."</title> <link>".$myLink."</link> <description>".$myDesc."</description> <pubDate>".date('r')."</pubDate> </item> "; //on récupère le contenu du fichier $fp = fopen ($myFeed, "r+"); $content = fread ($fp, filesize($myFeed)); fclose ($fp); $position=stripos($content,"<item>"); if(!$position) { $position=stripos($content,"</channel>"); } //on récupère le header du rss $headerRss=substr($content,0,$position); //on récupère le reste du rss $resteRss=substr($content,$position,strlen($content)); //on ajoute le noeud au rss $myRss=$headerRss.$newNode.$resteRss; //on enregistre le fichier $fp = fopen ($myFeed, "w"); fwrite ($fp, $myRss); fclose ($fp); }
Voici comme l'utiliser: updateRss(“chemin-de-mon-rss.xml”,”Titre de ma news”,”http://www.url-de-ma-news.com”,”Je met ici la description de ma news”);
Voici une version plus propre utilisant la classe DOM XML de php 4
function updateRss($myFeed,$myTitle,$myLink,$myDesc) { $dom = domxml_open_file($myFeed); //on récupère le noeud channel $channelList=$dom->get_elements_by_tagname("channel"); $channel=$channelList[0]; //echo $channel->get_content(); //on créé un nouvel item $item=$dom->create_element("item"); //on créé le noeud titre $title=$dom->create_element("title"); $item->append_child($title); $text = $dom->create_text_node($myTitle); $text = $title->append_child($text); //on créé le noeud link $link=$dom->create_element("link"); $item->append_child($link); $text = $dom->create_text_node($myLink); $text = $link->append_child($text); //on créé le noeud description $description=$dom->create_element("description"); $item->append_child($description); $text = $dom->create_text_node($myDesc); $text = $description->append_child($text); //on créé le noeud pubDate $pubDate=$dom->create_element("pubDate"); $item->append_child($pubDate); $text = $dom->create_text_node(date('r')); $text = $pubDate->append_child($text); //on ajoute le nouvel item au xml $channel->append_child($item); //on sauvegarde le xml dans le fichier $dom->dump_file($myFeed, false, true); }
Cette version utilise la classe DOM ajoutée avec PHP5
function updateRss($myFeed,$myTitle,$myLink,$myDesc) { $dom = new DomDocument('1.0', 'UTF-8'); $dom->preserveWhiteSpace = FALSE; $dom->formatOutput = TRUE; $dom->load($myFeed); //on récupère le noeud channel $channelList=$dom->getElementsByTagName("channel"); $channel=$channelList->item(0); //on créé un nouvel item $item=$dom->createElement("item"); //on créé le noeud titre $title=$dom->createElement("title",$myTitle); //on créé le noeud link $link=$dom->createElement("link",$myLink); //on créé le noeud description $description=$dom->createElement("description",$myDesc); //on créé le noeud pubDate $pubDate=$dom->createElement("pubDate",date('r')); //on insère les noeud dans le noeud item $item->appendChild($title); $item->appendChild($link); $item->appendChild($description); $item->appendChild($pubDate); //on ajoute le nouvel item au xml $channel->appendChild($item); //on sauvegarde le xml dans une variable $myXML=$dom->saveXML(); //on met à jour le fichier $fp = fopen ($myFeed, "w"); fwrite ($fp, $myXML); fclose ($fp); }
Vous pouvez utiliser le validateur du W3C : http://validator.w3.org/feed/check.cgi
16/11/2007 15:35 -
ManiT4c
Vous désirez créer votre site web ? Je suiswebmaster en normandie sinon vous pouvez consulter mon profil yoolink pour suivre mon actu etmon twitter.
Discussion