Bibliothèque génératrice de flux rss

Soyez le premier à donner votre avis sur cette source.

Vue 8 024 fois - Téléchargée 442 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

Messages postés
7
Date d'inscription
vendredi 16 avril 2010
Statut
Membre
Dernière intervention
21 avril 2010

bonjour ,
juste une petite question , est ce que on peux utiliser ce code pour n'importe quel site ?
Messages postés
265
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
27 octobre 2014

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
Messages postés
4
Date d'inscription
samedi 11 février 2006
Statut
Membre
Dernière intervention
25 octobre 2006

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
Messages postés
265
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
27 octobre 2014

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...
Messages postés
5
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
13 août 2005

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.