Maxime Millet

Mon existence a un sens si je la vis comme je la pense. — Dub Inc

Documentation SyndExport

Vous trouverez ici toute les informations dont vous pourrez avoir besoin pour l'utilisation de SyndExport 2.x. Un sommaire pour parcourir la page plus rapidement est disponible à droite.

Manipuler un flux avec SyndExport

Pour utiliser SyndExport, vous devez inclure le fichier classe puis créer un nouvel objet SyndExport. Son constructeur prend un paramètre obligatoire qui doit contenir l'url du flux ou son contenu. S'il s'agit de son contenu, vous devez déclarer un deuxième paramètre qui vaudra false.

<?php
include("syndexport.php");
// nouveau flux avec url :
$flux = new SyndExport("http://milletmaxime.net/rss.php");
// nouveau flux avec contenu :
$feed_content =file_get_contents("http://milletmaxime.net/rss.php");
$fluxrss = new SyndExport($feed_content, false);
?>

Dans cette version le constructeur peut retourner les erreurs suivantes.

Code Message Description
00 Failed to open the feed SyndExport n'a pas réussi à ouvrir le flux.
01 This file is not a feed Le contenu du flux a été récupéré mais celui-ci n'est pas valide, il manque une balise <rss> ou <feed>.
02 Failed to use the feed (SimpleXML) SimpleXML n'a pas pu traiter le contenu du flux, cette erreur apparait en général quand le contenu n'est pas un fichier xml.

Type de flux

Maintenant que votre objet SyndExport est créé, vous pouvez obtenir le type du flux utilisé, grâce à la méthode returnType(). Celle-ci retourne false si ce n'est pas un flux RSS ni un flux ATOM.

$type = $flux->returnType();
echo "Ceci est un flux $type !";

Nombre d'entrées

Le nombre d'entrées que possède le flux peut s'obtenir grâce à l'attribut countItems().

$nbr = $flux->countItems();
echo "Le flux possède $nbr entrées !";

Extraire les informations du flux

Pour obtenir les informations de flux, il faut utiliser la méthode exportInfos(), celle-ci retourne un tableau php contenant le titre, la description, la date de dernière modification, l'auteur et son e-mail, l'image du flux, la langue du flux, le copyright ainsi que l'url du site.
(!) Vous pouvez passer la chaine json en paramètre pour exporter les informations en JSON.
(!) Le second paramètre vous permet de donner le nom d'une balise à récupérer qui ne l'est pas automatiquement, son ID dans le tableau est other.


var_dump($flux->exportInfos());

Va retourner le tableau suivant :

array(8) {
  ["title"]=>
  string(8) "Mon site"
  ["description"]=>
  string(35) "Ceci est un exemple de flux RSS 2.0"
  ["link"]=>
  string(22) "http://www.example.org"
  ["language"]=>
  string(2) "fr"
  ["email"]=>
  string(16) "toto@exemple.com"
  ["author"]=>
  string(4) "Toto"
  ["last"]=>
  string(29) "Sat, 14 Sep 2012 02:02:02 GMT"
  ["copyright"]=>
  string(16) "Toto Corporation"
}

Pour obtenir une seule information de flux, il faut utiliser la méthode exportOtherInfo(), celle-ci retourne le contenu de la balise. Elle peut par exemple servir à connaitre le contenu d'une balise qui n'est pas retournée par défaut comme le TTL.
/!\ Son seul paramètre est le nom de la balise à retourner.

echo "Le TTL est de : ".$flux->exportOtherInfo("ttl");

Va afficher le message suivant :

Le TTL est de : 75

Extraire les entrées

Pour obtenir les entrées de flux, il faut utiliser la méthode exportItems(), celle-ci retourne un tableau php multidimensionnel contenant pour chaque entrée les informations suivantes (si présente dans le flux) : titre, description, lien, auteur, date et guid.

/!\ Le premier paramètre est le nombre d'entrées maximum à retourner, par défaut il est égal à 20. Pour le rendre illimité (retourner toutes les entrées) il faut utiliser -1 .
(!) Vous pouvez passer la chaine json en second paramètre pour exporter les entrées en JSON.
(!) Le troisième paramètre vous permet de donner le nom d'une balise à récupérer qui ne l'est pas automatiquement, son ID dans le tableau est other.

var_dump($flux->exportItems());

Va retourner le tableau suivant :

array(2) {
  [0]=>
  array(7) {
    ["title"]=>
    string(15) "Actualité N°2"
    ["description"]=>
    string(32) "Ceci est ma deuxième actualité"
    ["link"]=>
    string(28) "http://www.example.org/actu2"
    ["author"]=>
    string(4) "Toto"
    ["date"]=>
    string(29) "Sat, 14 Sep 2012 02:02:02 GMT"
    ["guid"]=>
    string(5) "actu2"
    ["content"]=>
    array(1) {
      ["encoded"]=>
      string(82) "Ceci est un namespace !! Le rangement des ns à changé dans cette version, la 2.1"
    }
  }
  [1]=>
  array(5) {
    ["title"]=>
    string(15) "Actualité N°1"
    ["description"]=>
    string(32) "Ceci est ma première actualité"
    ["link"]=>
    string(28) "http://www.example.org/actu1"
    ["date"]=>
    string(29) "Sat, 07 Sep 2012 01:01:01 GMT"
    ["media"]=>
    array(3) {
      ["url"]=>
      string(136) "http://s1.lemde.fr/image/2012/07/14/87x0/1733839_7_3750_francois-hollande-et-jean-marc-ayrault-a-la_de90760d9db3388bd863524b62be4d20.jpg"
      ["type"]=>
      string(10) "image/jpeg"
      ["length"]=>
      int(2552)
    }
  }
}

A partir de la version 2.1 les namespaces ne sont plus rangés dans un tableau ns mais dans le même tableau que le reste des informations de l'entrée.

Liste des méthodes

Nom Paramètre(s) Retour
returnType() Aucun Type de flux
countItems() Aucun Nombre d'entrées
exportInfos()

1 : Chaine "json" pour exporter les informations en JSON (optionnel)

2 : Autre balise à exporter (optionnel)

Informations du flux
exportItems()

1 : Nombre d'entrées à retourner au maximum
2 : Chaine "json" pour exporter les informations en JSON (optionnel)

3 : Autre balise à exporter (optionnel)

Entrées du flux
exportOtherInfo() 1 : Nom de l'information du flux à retourner (ex : title) Nom de l'information
returnNamespaces() Aucun Indique si les NS sont extraits
exportNamespaces() 1 : True si vous souhaitez exporter les NS sinon false (true par défaut) Rien