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 :

compatibilité loadhtml et utf-8


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut compatibilité loadhtml et utf-8
    Bonjour,

    J'ai besoin d'utiliser un objet DomXpath pour analyser des pages HTML
    Pour cela j'utilise les lignes de codes suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $dom = new DomDocument;
    @$dom -> loadHTML($url_content);
    $xpath = new DomXPath($dom);
    $url_content est le contenu d'une page web récupéré via CURL

    Cela fonctionne bien mis à part sur quelques sites (pas tous) en UTF-8 où le loadhtml retourne un fichier vide (sans erreur particulière)
    Le problème est comme je l'ai deja dit plus haut ce n'est pas systématique : pour la plupart des sites en UTF-8 cela fonctionne

    Quelque'un a t-il un retour d'expérience similaire ? et/ou une solution pour l'aider ?

    d'avance merci

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Les noms de ces classes sont DOMDocument et DOMXPath (avec DOM en majuscule).

    Si tu veux voir les éventuels messages d'erreurs enlève l'arobase devant $dom->loadHTML($url_content);, peut être qu'ils contiennent des informations susceptibles de t'aider.

    Concernant ton contenu vide, as-tu vérifier que $url_content ne l'était pas auparavant? Je ne pense pas que l'UTF8 soit en cause.

    NB: il n'est pas forcément utile d'utiliser cURL pour obtenir le contenu de la page web, la méthode DOMDocument::loadHTMLFile peut s'en charger, et les paramètres que l'on peut passer à cURL, peuvent être passés à cette méthode via stream_context_create et stream_context_set_option.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut
    $url_content contient bien le fichier

    si l'utf-8 est en cause j'ai pu le vérifier en utilisant la "bidouille suivante" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dom->loadHTML('<?xml encoding="UTF-8">' . $url_content);
    mais ce n'est pas une solution pérenne

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Et as-tu essayer de passer l'encodage directement dans le constructeur?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dom = new DOMDocument('1.0', 'UTF-8');

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut
    je vais essayer, mais que se passera t-il pour les pages html qui ne sont pas en utf-8 ?

  6. #6
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Non en fait ça ne change rien, l'encodage est systématiquement redéfini au chargement de la page. Mais je pense toujours que l'encodage n'y est pour rien. Peux-tu donner l'url d'une des pages problématiques.

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

Discussions similaires

  1. Problèmes de compatibilités avec fr_FR.UTF-8 ?
    Par Aurelienjjj dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 10/05/2012, 14h43
  2. help!! problème de compatibilité ascendante
    Par valfredr dans le forum XMLRAD
    Réponses: 5
    Dernier message: 16/06/2003, 16h15
  3. [7RC3] Compatibilité avec les anciennes versions ...
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 3
    Dernier message: 15/05/2003, 16h46
  4. Compatibilité Visibroker 4.5 C++ Builder
    Par manuel dans le forum CORBA
    Réponses: 4
    Dernier message: 15/07/2002, 21h57
  5. compatibilité des librairies directX8
    Par Freakazoid dans le forum DirectX
    Réponses: 3
    Dernier message: 23/05/2002, 21h33

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