le 19/04/2005 à 17:39
bibi
Bonjour les gens . Ca fait un petit moment que je viens plus sur le site, trop a fond dans wow et dans mon stage :)
Je voulai faire un gestionnaire et afficheur de flux et donc je dois gérer tous les types de flux RSS mais la n'est pas le probleme. Lorsque le flux est de type ATOM, je dois catcher les <link ... > qui sont que de type text/html donc type="text/html"
voici a quoi ressemble une balise link
Le premier n'est pas a catché car il n'a pas le bon type, donc on doit prendre le 2eme . Mais le type="text/html" peut etre soit avant, soit apres le href et donc la se pose le probleme car je voudrais que s'il n'y est pas avant, il doit absolument y etre apres. J'ai donc regardé les sous-masques conditionnels et j'ai fait cette expression:
qui tourne avec un preg_match :
Avec ceci:
Le tableau $lien_atom est vide.
Par contre , avec ceci :
le tableau ressemble a ca :
et donc tout fonctionne parfaitement.
J'espere avoir été clair
En gros, je voudrais que le premier exemple catch la ligne de link ou le type est text/html, comme dans le 2eme exemple meme si ce dernier ne comporte qu'une balise link
merci d'avance si vous avez eu la volonté d'arriver jusque la
Je voulai faire un gestionnaire et afficheur de flux et donc je dois gérer tous les types de flux RSS mais la n'est pas le probleme. Lorsque le flux est de type ATOM, je dois catcher les <link ... > qui sont que de type text/html donc type="text/html"
voici a quoi ressemble une balise link
<link href="http://www.blogger.com/atom/6356614/108567929825946436" rel="service.edit" title="How to make a linkblog in Atom" type="application/atom+xml"/>
<link href="http://diveintomark.org/archives/2004/05/27/howto-atom-linkblog" rel="related" title="How to make a linkblog in Atom" type="text/html"/>
Le premier n'est pas a catché car il n'a pas le bon type, donc on doit prendre le 2eme . Mais le type="text/html" peut etre soit avant, soit apres le href et donc la se pose le probleme car je voudrais que s'il n'y est pas avant, il doit absolument y etre apres. J'ai donc regardé les sous-masques conditionnels et j'ai fait cette expression:
'/<link(.*)(type="text\/html")(.*) href="([^"]+)"(?(2)(.*)|(type="text\/html"))(\/?)>/i'
qui tourne avec un preg_match :
preg_match('/<link(.*)(type="text\/html")(.*) href="([^"]+)"(?(2)(.*)|(type="text\/html"))(\/?)>/i',$this->items[$i+1],$lien_atom);
Avec ceci:
<link href="http://www.blogger.com/atom/6356614/108567929825946436" rel="service.edit" title="How to make a linkblog in Atom" type="application/atom+xml"/>
<link href="http://diveintomark.org/archives/2004/05/27/howto-atom-linkblog" rel="related" title="How to make a linkblog in Atom" type="text/html"/>
Le tableau $lien_atom est vide.
Par contre , avec ceci :
<link rel="alternate" type="text/html" href="http://eurosport.tf1.fr/home/pages/v4/l3/s18/sport_lng3_spo18_sto709471.shtml">
le tableau ressemble a ca :
Array
(
[0] => <link rel="alternate" type="text/html" href="http://eurosport.tf1.fr/home/pages/v4/l3/s18/sport_lng3_spo18_sto709471.shtml">
[1] => rel="alternate"
[2] => type="text/html"
[3] =>
[4] => http://eurosport.tf1.fr/home/pages/v4/l3/s18/sport_lng3_spo18_sto709471.shtml
[5] =>
[6] =>
[7] =>
)
et donc tout fonctionne parfaitement.
J'espere avoir été clair
En gros, je voudrais que le premier exemple catch la ligne de link ou le type est text/html, comme dans le 2eme exemple meme si ce dernier ne comporte qu'une balise link
merci d'avance si vous avez eu la volonté d'arriver jusque la