Je travaille actuellement sur une application qui utilise simplexml de php pour interpréter les flux rss à partir de plusieurs sites. J'ai réussi à faire en sorte que cela fonctionne avec les flux Atom et RSS, mais un flux ne fonctionne que parfois, ce qui n'a pas vraiment de sens. Le flux est situé http://www.popsci.com/rss.xml. Je me demande si le flux lui-même est mal formé, ou s'il y a quelque chose qu'il fait qui est valide, mais inhabituel. Je l'ai regardé de haut en bas, mais je ne trouve rien de mal. Mon code interprète parfaitement d'autres flux, donc je me demande pourquoi celui-ci lui pose problème. Et seulement parfois. Ce que je veux dire par là, c'est que parfois il va réussir à interpréter le flux, mais d'autres fois, l'appel à simplexml_load_file()
échoue et renvoie false.Flux RSS malformé/fichier XML?
J'ai un journal d'erreurs et c'est ce qui a été rapporté (la même chose à chaque fois qu'il échoue):
[08-Nov-2010 03:30:17] PHP Warning: simplexml_load_file() [ function.simplexml-charge-file]: http://www.popsci.com/rss.xml:1: erreur d'analyse: tag Lancer attendu, '<' ne trouve pas dans /Applications/MAMP/cmb/cron.php en ligne 15
[08-nov-2010 03:30 : 17] PHP Avertissement: simplexml_load_file() [function.simplexml-load-file]: dans /Applications/MAMP/cmb/cron.php à la ligne 15
[08-Nov-2010 03:30:17] Avertissement PHP: simplexml_load_file() [function.simplexml-load-file]:^dans /Applications/MAMP/cmb/cron.php à la ligne 15
Mais je ne suis pas sûr de savoir quoi faire de ces erreurs, et j'apprécierais si quelqu'un pouvait me diriger dans la bonne direction. Merci! (Ligne PS 15 cron.php est l'appel à simplexml_load_file()
)
L'alimentation est bonne. Si je tire le fichier avec curl et j'essaie 'php -r 'echo simplexml_load_file (" rss.xml ") -> channel-> title;' 'il imprime le titre. Si j'utilise l'URL, en double citation, elle donne vos erreurs. Avec l'URL entre guillemets simples, cela fonctionne. Je ne suis pas un expert PHP: je ne sais pas pourquoi cela fait une différence. Peut-être que quelqu'un peut expliquer. –
Nevermind: les citations ne font pas de différence. Cela varie avec le temps. Cela semble avoir quelque chose à voir avec la compression: parfois c'est gzippé et parfois non. –