Bibliothèque génératrice de flux rss

Soyez le premier à donner votre avis sur cette source.

Vue 8 258 fois - Téléchargée 451 fois

Description

Cette source n'est pas de moi je tiens a le preciser...mais je les trouver tellement puissante que je n'es pas pu m'empecher de vous la proposer ...

En fait grace a cette class disposant de fonction spécifique approuvé par le feed validator vous allez pouvoir générer des flux RSS aux normes

Source / Exemple :


<?php

// $Id: rss10.inc,v 1.3 2001/05/20 17:58:02 edmundd Exp $
//
// A convenience class to make it easy to write RSS classes
// Edd Dumbill <mailto:edd+rsswriter@usefulinc.com>
//
// $Log: rss10.inc,v $
// Revision 1.3  2001/05/20 17:58:02  edmundd
// Final distribution tweaks.
//
// Revision 1.2  2001/05/20 17:41:30  edmundd
// Ready for distribution.
//
// Revision 1.1  2001/05/20 17:01:43  edmundd
// First functional draft of code working.
//
// Revision 1.1  2001/05/17 18:17:46  edmundd
// Start of a convenience library to help RSS1.0 creation
//

class RSSWriter {

function RSSWriter($uri, $title, $description, $meta=array()) {
	$this->chaninfo=array();
	$this->website=$uri;
	$this->chaninfo["link"]=$uri;
	$this->chaninfo["description"]=$description;
	$this->chaninfo["title"]=$title;
	$this->items=array();
	$this->modules=array("dc" => "http://purl.org/dc/elements/1.1/");
	// thanks James Mills for bugfix to this line
	$this->channelURI=str_replace("&", "&amp;", "http://" . $GLOBALS["SERVER_NAME"] . $GLOBALS["REQUEST_URI"]);
	foreach ($meta as $key => $value) {
		$this->chaninfo[$key]=$value;
	}
}

function useModule($prefix, $uri) {
	$this->modules[$prefix]=$uri;
}

function setImage($imgURI, $imgAlt, $imgWidth=88, $imgHeight=31) {
	$this->image=array(
		"uri" => $imgURI, "title" => $imgAlt, "width" => $imgWidth,
		"height" => $imgHeight);
}

function addItem($uri, $title, $meta=array()) {
	$item=array("uri" => $uri, "link" => $uri, 
		"title" => $this->deTag($title));
	foreach ($meta as $key => $value) {
		if ($key == "description" || $key == "dc:description") {
			$value=$this->deTag($value);
		}
		$item[$key]=$value;
	}
	$this->items[]=$item;
}

function serialize() {
	$this->preamble();
	$this->channelinfo();
	$this->image();
	$this->items();
	$this->postamble();
}

function deTag($in) {
  while(ereg('<[^>]+>', $in)) {
	$in=ereg_replace('<[^>]+>', '', $in);
  }
  return $in;
}

function preamble() {
	header("Content-type: text/xml");
	print '<?xml version="1.0" encoding="iso-8859-1"?>
<rdf:RDF 
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns="http://purl.org/rss/1.0/"
         xmlns:mn="http://usefulinc.com/rss/manifest/"
';
	foreach ($this->modules as $prefix => $uri) {
		print "         xmlns:${prefix}=\"${uri}\"\n";
	}
	print ">\n\n";
}

function channelinfo() {
	print '  <channel rdf:about="' .  $this->channelURI . '">
';
	$i=$this->chaninfo;
	foreach (array("title", "link", "dc:source", "description", "dc:language", "dc:publisher",
		"dc:creator", "dc:rights") as $f) {
		if (isset($i[$f])) {
			print "    <${f}>" . htmlspecialchars($i[$f]) . "</${f}>\n";
		}
	}
	if (isset($this->image)) {
		print "    <image rdf:resource=\"" . htmlspecialchars($this->image["uri"]) . "\" />\n";
	}
	print "    <items>\n";
	print "      <rdf:Seq>\n";
	foreach ($this->items as $i) {
		print "        <rdf:li rdf:resource=\"" . htmlspecialchars($i["uri"]) . "\" />\n";
	}
	print "      </rdf:Seq>\n";
	print "    </items>\n";
	print "  </channel>\n\n";
}

function image() {
	if (isset($this->image)) {
	print "  <image rdf:about=\"" . htmlspecialchars($this->image["uri"]) . "\">\n";
    print "     <title>" . htmlspecialchars($this->image["title"]) . "</title>\n";
    print "     <url>" . htmlspecialchars($this->image["uri"]) . "</url>\n";
    print "     <link>" . htmlspecialchars($this->website) . "</link>\n";
    if ($this->chaninfo["description"]) 
   	 print "     <dc:description>" . htmlspecialchars($this->chaninfo["description"]) . 
   	 	"</dc:description>\n";
	print "  </image>\n\n";
	}
}

function postamble() {
	print '  <rdf:Description rdf:ID="manifest">
    <mn:channels>
      <rdf:Seq>
        <rdf:li rdf:resource="' . $this->channelURI . '" />
      </rdf:Seq>
    </mn:channels>
  </rdf:Description>

</rdf:RDF>
';
}

function items() {
	foreach ($this->items as $item) {
		print "  <item rdf:about=\"" .  htmlspecialchars($item["uri"]) . "\">\n";
		foreach ($item as $key => $value) {
			if ($key!="uri") {
				if (is_array($value)) {
					foreach ($value as $v1) {
						print "    <${key}>" . htmlspecialchars($v1) . "</${key}>\n";
					}
				} else {
					print "    <${key}>" . htmlspecialchars($value) . "</${key}>\n";
				}
			}
		}
		print "  </item>\n\n";
	}
}

}

?>

Conclusion :


Comment ca marche??

<?php
include("rss10.inc");
....
$rss=new RSSWriter("http://www.example.org/";
"Example Site", "The best examples out there.",
array("dc:publisher" => "Example Publishing Inc.",
"dc:creator" => "E X Ample <me@example.org>"));
...
//pour une image
$rss->setImage("http://www.example.org/images/rss.gif","Example Site: All the Examples Fit to Print");
...
//pour un item
$rss->addItem("http://www.example.org/page1.html","First Example Page");
....
//pour le module (special attention!!)
$rss->useModule("ex", "http://www.example.org/ns/myModule/");
...
//pôur generer le fichier rss
$rss->serialize();
?>

plus d'explication en anglais ici http://usefulinc.com/rss/rsswriter/

Codes Sources

A voir également

Ajouter un commentaire Commentaires
oomar124 Messages postés 7 Date d'inscription vendredi 16 avril 2010 Statut Membre Dernière intervention 21 avril 2010
16 avril 2010 à 10:05
bonjour ,
juste une petite question , est ce que on peux utiliser ce code pour n'importe quel site ?
pouda Messages postés 265 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 27 octobre 2014
8 mai 2006 à 22:52
non elle est généré a chaque accès ensuite ton interpréteur ne reprend que les données qui ne sont pas présente en local....par exemple si le code php est placé dnas un repertoire RSS tu y'accedra en tapant http://www.tonsite.fr/RSS/?show=flux
rimk95 Messages postés 4 Date d'inscription samedi 11 février 2006 Statut Membre Dernière intervention 25 octobre 2006
3 avril 2006 à 15:52
Salut à tous.
Pouda->J'aurrai aimé avoir quelques petites explication pour newbee stp. Si j'ai bien comprit, ta class créée elle même le flut rss du site, mai sous quelle forme: .rss, .xml? La source présente dans Explication Final est celle du fichier .php? Merci
pouda Messages postés 265 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 27 octobre 2014
14 août 2005 à 00:25
deja d'une tu te calme stp et en plus tu ouvrirais tes yeux tu verrais que j'ai expliqué comment la blibliothèque fonctionne..Deuxio mon site est privé c'est pour eviter que des gens comme toi aille dessus et je suis bien content que ca ait marcher..
JE PASSE egalement mais pour toi passe ton chemin avec des critiques comme celle la l'ami tu n'arrivera a rien dans la vie...
toparts Messages postés 5 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 13 août 2005
13 août 2005 à 19:29
Bon pur l'instant je ne l'ai pas installé,car dans le zip il y à seulement un archive .inc,et avec ça JE FAIT QUOI???Il faudrait peut-etre expliquer aux debutant comment faire...
J'ai voulu aller sur le site web de l'auteur POUDA (ci-dessus)mais il faut un ID et PASS pour entrer sur la page !!!Quel stupidesse ,tout cela pour avoir des membres registrer.JE PASSE......

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.