Reconnaitre la norme d'un flux ?

WRInaute impliqué
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!
 
WRInaute impliqué
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:
$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!
 
WRInaute passionné
amazigh25 a dit:
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:
$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 ?
 
WRInaute impliqué
En bossant hier, j'ai fini par trouver !

Code:
<?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!
 
Discussions similaires
Haut