Reconnaitre la norme d'un flux ?

amazigh25
WRInaute passionné
WRInaute passionné
 
Messages: 1006
Inscription: 4 Juin 2005

Reconnaitre la norme d'un flux ?

Message le Ven Juil 27, 2007 0:36

Salut !

Quelqu'un d'entre vous sait-il comment reconnaitre la norme d'un flux à l'aide dun bout de script php ? Je m'explique

J'entre dans mon script un flux (www.adresse.com/flux.ext) et ce script cherche si c'est un RSS 1, 2 ou un Atom ou un Rdf et affiche la réponse !

La plupart des agrégateurs doivent contenir cette fonction mais il faut comprendre la structure de tout leur code pour trouver la bonne fonction.


Merci !

Adamito!

padawan2
WRInaute impliqué
WRInaute impliqué
 
Messages: 590
Inscription: 2 Fév 2007

Message le Ven Juil 27, 2007 5:34

Tu dois avoir quelque chose de la forme:

<rss version="2.0">


Qui te dit quel version est utilisée dans le flux.

amazigh25
WRInaute passionné
WRInaute passionné
 
Messages: 1006
Inscription: 4 Juin 2005

Message le Ven Juil 27, 2007 12:56

Je suis pas sur que c'est aussi simple !

Adamito!


arnaudmn
WRInaute passionné
WRInaute passionné
 
Messages: 1536
Inscription: 11 Mai 2005

Message le Ven Juil 27, 2007 13:15

amazigh25 a écrit:Je suis pas sur que c'est aussi simple !


Et ben si. La première ligne permet de connaitre quel norme suit le flux.

amazigh25
WRInaute passionné
WRInaute passionné
 
Messages: 1006
Inscription: 4 Juin 2005

Message le Ven Juil 27, 2007 13:36

Je me suis mal exprimé je pense.
Ce que padawan2 a dis est vrai, chaque fichier rss ou atom contient une "balise" qui désigne sa norme.

Pour celà il faut d'abbord ouvrir le fichier voulu :

Code: Tout sélectionner
$flux = file ('http://www.flux.com/index.xml);


Mais je n'arrive pas savoir si $flux contient ou non "<rss version="2.0">" par exemple. J'ai utilisé des regex mais ça ne marche pas.

Adamito!


Leonick
WRInaute accro
WRInaute accro
 
Messages: 18812
Inscription: 8 Aoû 2004

Message le Ven Juil 27, 2007 16:45

amazigh25 a écrit:J'ai utilisé des regex mais ça ne marche pas.Adamito!
lesquels ?


arnaudmn
WRInaute passionné
WRInaute passionné
 
Messages: 1536
Inscription: 11 Mai 2005

Message le Ven Juil 27, 2007 18:04

amazigh25 a écrit:Je me suis mal exprimé je pense.
Ce que padawan2 a dis est vrai, chaque fichier rss ou atom contient une "balise" qui désigne sa norme.

Pour celà il faut d'abbord ouvrir le fichier voulu :


Ben .... un truc comme ça :
Code: Tout sélectionner
$flux = "http://lurlduflux/toto.rss";
$handle = fopen ($flux, "r");
$quoi= fread ($handle, 20);
fclose ($handle);
$quoi = strtolower($quoi);
if (strpos($quoi, "2.0")!==false) echo "flux version 2.0";
else  ...


J'ai bon ?

amazigh25
WRInaute passionné
WRInaute passionné
 
Messages: 1006
Inscription: 4 Juin 2005

Message le Sam Juil 28, 2007 5:56

En bossant hier, j'ai fini par trouver !

Code: Tout sélectionner
<?php      
   function rss($file)
   {
         if (!$lefichier = fopen("$file", "r")) print "Échec ouverture $file<br>";
         else
         {
            $i = 0;
            $ok= false;
            While (($ligne = fgets($lefichier))&&($ok==false))
            {
               $i++;

               if (preg_match("/.*(<rss version=\"2.0\">).*/i", $ligne)) //RSS 2
               {
               $norme = "rss2";
                    echo $norme;
               $ok =true;
               }
               elseif (preg_match("/.*(rdf:RDF).*/i", $ligne))  // RDF
               {
               $norme = "rdf";
                    echo $norme;
               $ok =true;
               }
               elseif (preg_match("/.*(\/Atom).*/i", $ligne))
               {
               $norme = "Atom";
                    echo $norme;
               $ok =true;
               }
            }
         }
         fclose($lefichier);
   }

      
                  rss("FLUX");      



?>


C'est une fonction pratique, qu'on facilement adapter.
Si quelqu'un veut des explications, je suis là pour ;)

Adamito!


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités