File_get_contents sur une URL : encodage

mentral Messages postés 56 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 22 janvier 2008 - 21 janv. 2008 à 22:48
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 - 22 janv. 2008 à 09:19
Bonjour,
Je suis en train de coder un script qui récupère une page HTML et l'analyse pour en extraire des informations. Pour cela, j'utilise file_get_contents(). Après avoir tourné en rond pendant un certain temps, j'ai compris que mon problème venait de l'encodage. Cependant, les fonctions mb_xxx() ne parviennent pas à venir à bout de ce code HTML, et iconv() non plus.

Ce qui fonctionne, c'est de se rendre à ladite URL, d'afficher le code source, de le copier/coller dans un bête fichier texte, puis de lancer le script avec comme input ce fichier texte au lieu de la page HTML et en remplaçant les fonctions strpos(), strlen() et substr() de base par leurs équivalents en mb_xxx().

Quelqu'un aurait-il une solution?

Merci! 

[ Mentral ]

4 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
21 janv. 2008 à 23:13
Hello,

si tu donnais l'encodage de la page attaquée, et de la page appelante ?
Et comment se présente ton problème, au passage ?
0
mentral Messages postés 56 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 22 janvier 2008
21 janv. 2008 à 23:22
La page que j'appelle est en l'occurence : http://finance.yahoo.com/q/pr?s=FLWS
L'encodage est apparemment du ISO-8859-1 mais il est reconnu comme UTF-8.

Le truc est le suivant: j'ai toute une série de fonctions strpos(), strlen() et substr() pour analyser ce code HTML. Je les ai toutes mises en mb_xxx().

Cas 1) je charge le code HTML en appelant file_get_contents("http://finance.yahoo.com/q/pr?s=FLWS", "r"); et là rien ne marche car les fonctions mb_xxx() ne reconnaissent rien, et leurs équivalentes sans mb_ ne marchent pas non plus.

Cas 2) plutôt que de charger le code HTML par le script PHP, je vais manuellement sur le site puis j'enregistre le code par Ctrl+C et Ctrl+V dans un fichier texte. Au début du script, je charge le fichier texte au lieu de charge l'URL et là toutes les fonctions en mb_xxx() fonctionnement correctement et parsent correctement le code HTML.

Merci!

[ Mentral ]
0
mentral Messages postés 56 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 22 janvier 2008
22 janv. 2008 à 00:48
Je viens de réessayer en encodant mon ficher de code PHP de toutes les façons possibles et imaginables, et/ou de coder en utf-8 chaque chaîne de caractère utilisée dans les strpos() etc.

Rien à faire. La seule chose qui fait marcher le script c'est de sauvegarder manuellement la page web depuis Firefox vers le disque dur puis de faire tourner le script sur ce fichier-là au lieu d'inclure l'URL directement.

Ce truc me rend dingue!!! 

[ Mentral ]
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
22 janv. 2008 à 09:19
tu peux éventuellement essayer les fonctions utf8_decode / utf8_encode, ca pourrait t'aider :p
0
Rejoignez-nous