IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Error d'encodage lors d'un parse d'une page HTLM [Encodage]


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Points : 227
    Points
    227
    Par défaut Error d'encodage lors d'un parse d'une page HTLM
    Bonjour a tous,

    Je suis en train de faire un petit bout de code qui me recupere une VDM en aléatoire.
    Le code recupere bien, la quote, mais celle-ci a un problème d'encodage.
    J'ai bien essayé de mettre une directive header pour l'UTF-8, mais cela ne change rien.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    header('Content-Type: text/html; charset=utf-8');
    $fileContents = file_get_contents("http://www.viedemerde.fr/aleatoire");
    $dom = new DOMDocument();
    @$dom->loadHTML($fileContents); 
     
    $quoteNumber = mt_rand ( 1 , 14 ) ;
    $xpath = new DOMXpath($dom);
    $path = '(//div[@class="post article"]/p)['.$quoteNumber.']/*';
    $query = $xpath->query($path);
     
    $path = '(//div[@class="post article"]/p)['.$quoteNumber.']/a[1]/@href';
    $urlQuery = $xpath->query($path);
    $url ="http://www.viedemerde.fr";
    foreach ($urlQuery as $node)
    	$url .= $node->value;
     
    foreach ($query as $node) {
    	$out = new DOMDocument();
     
        foreach($node->childNodes as $child)
        {
            $inner = $out->importNode($child, true);
            $out->appendChild($inner);
        }
     
        echo $out->saveHTML();
    }
     
    echo "<cite>".$url."</cite>";
    Voici un exemple de sortie:
    Aujourd'hui, travaillant dans le télémarketing, je dois composer le numéro de fixe de chez mes parents
    Auriez vous une idée de comment je peux resoudre ceci ?

    Je vous remercie d'avance pour votre aide

    PS: Ce code est utilisé pour un appel Ajax et le resultat est insérer dans une page HTML en UTF-8

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Est-ce que le code fonctionne en dehors de l'appel Ajax ?
    Est-ce que tes fichiers .php sont bien écrits en UTF8 ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Points : 227
    Points
    227
    Par défaut
    Non cela ne fonctionne pas non plus si j'appel directement le fichier PHP depuis chrome.
    Mes fichiers php sont en UTF-8 (sans BOM)
    Le fichier JS et le fichier html des appel Ajax sont eux aussi en UTF-8 sans BOM

    EDIT: j'ai trouver, c'est un problème de libxml2 .
    Voici le petit hack
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @$dom->loadHTML('<?xml encoding="UTF-8">'.$fileContents);
    Voila voila, merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème d'encodage lors de la création d'une base
    Par thor76160 dans le forum PostgreSQL
    Réponses: 22
    Dernier message: 04/03/2011, 15h04
  2. problème d'encodage lors de la création d'une base
    Par thor76160 dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 29/01/2010, 19h47
  3. [Système] Parsing d'une page PHP
    Par Royd938 dans le forum Langage
    Réponses: 2
    Dernier message: 08/05/2006, 12h21
  4. Appeler un script extérieur lors de l'ouverture d'une page.
    Par beegees dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 06/03/2006, 16h40
  5. Probleme de cache lors de la recup d'une page web
    Par firejocker dans le forum MFC
    Réponses: 1
    Dernier message: 22/12/2005, 17h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo