broncowdd / feed2array

A tiny php function to get a atom/rss feed and create an array with all the content (less than 70 lines)
12 stars 5 forks source link

Preg_match et articles particuliers #4

Open Phyks opened 10 years ago

Phyks commented 10 years ago

Bonjour,

Je viens de tomber sur ce bout de code qui a l'air super. Mais au tout début du fichier, dans le test pour déterminer le type de flux, l'utilisation d'une regex me paraît un peu overkill et posant problèmes dans certains cas.

Avec la regex actuelle, on ne teste que la présence de <rss> et </rss> (par exemple). Du coup, un strstr me semble beaucoup léger, sans changer grand chose.

Mais surtout, si un flux est un flux ATOM, mais contient les balises <rss> et </rss> dans le contenu d'un article (car l'article en question parle des flux RSS par exemple et inclue un exemple), il me semble que le flux va être incorrectement identifié comme étant RSS et non ATOM, non ?

Du coup, il me semble plus simple de parser tout le flux avec SimpleXML, puis de regarder quel est l'élément de plus haut niveau, par exemple.

broncowdd commented 10 years ago

Bonjour et merci pour ce commentaire ;-) La regex du début teste si on est face à une balise contenant ou pas des attributs et comme il s'agit d'un preg match et pas d'un preg match all, c'est le premier de la chaîne qui respecte la règle qui est renvoyé... Toutefois, si tu vois un moyen d'améliorer le tout sans trop de complications, je suis vigoureusement preneur ;-)

Phyks commented 10 years ago

Merci pour cette lib, tip top et bien plus rapide que SimplePie and co.

J'ai customisé un peu la fonction pour répondre à mes besoins, et rajouter quelques trucs dans la spec RSS / ATOM. Je ne gagne pas grand chose par rapport à ta fonction en performances, mais je pense que je n'ai plus de problème de ce genre.

Je n'ai pas testé en détails , mais ma fonction est disponible ici : https://zb.phyks.me/?8d53b2caa4cef10c#DEH/teA23xEMOZtIc8m/1Cqg0RqD6D+p6bAeE1ELx84=

broncowdd commented 10 years ago

Merci, je regarde ça asap ;-)

Phyks commented 10 years ago

Ma fonction est disponible îci, elle est réutilisée dans le lecteur RSS Freeder.

J'ai beaucoup refactorisé, mais je suis resté basé sur ton code initial. J'essaye d'être au plus près de la spécification RSS et ATOM, en essayant d'avoir un certain nombre de garanties s'il manque des éléments, et en récupérant le plus possible. C'est sûrement encore améliorable (les RSS v1 passent en théorie, mais je n'ai pas assez testé ça par exemple).