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 :

SimpleXML -> Plantage :(.. Une autre méthode à utiliser pour analyser du HTML?


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Points : 56
    Points
    56
    Par défaut SimpleXML -> Plantage :(.. Une autre méthode à utiliser pour analyser du HTML?
    Salut,
    je suis arrivé dans une impasse car actuellement tout fonctionne chez moi
    sauf dans certains cas et ce genre de cas, je ne peux pas les gérer.

    Je vais lire l'entête de lien me permettant de réunir des informations.
    Jusque ici tout va bien.
    J'utilise DOMDocument pour aller chercher le contenu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    				if (@$doc->loadHTMLFile($url))
    				{
    					$xml = simplexml_import_dom($doc);
    				}
    ...
    Imagination quelqu'un qui met dans son fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta name="description" content="ma descr(iption qui tue "met avec un problème de guillemet mals placées donc avec une erreur de syntaxe"/>
    Le server plante, même le try catch n'y fait rien. SimpleXML crash donc purement et simplement et fait donc crasher le server.

    Existe une autre alternative à SimpleXML pour aller lire du HTML ?

  2. #2
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Bonjour,

    Je n'ai jamais utilisé cette fonctionnalité, mais il est vrai que simplexml n'apprécie pas du tout un flux non correcte.

    Dans ton cas, il faut que tu parcours l'arbre au moyen des méthodes de l'objet DOMDocument que tu as utilisé auparavant.

    PS : Evite d'utiliser @ c'est moche et contreproductif. Les warning et autres joyeusté sont là pour une raison bien précise.
    En production, ces erreurs iront dans les logs fichiers ( et non écran ) que l'on doit consulter régulièrement et te permettront éventuellement d'adapter le programme aux cas rencontrés.

  3. #3
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    est-ce que tu ne peux pas utiliser directement SimpleXML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    if($xml = @simplexml_load_string('<?xml version="1.0" encoding="ISO-8859-1"?>
    <root>'.file_get_contents('file.txt').'</root>'))	{
    	var_dump($xml);
    }
    else	 {
    	die('erreur');
    }
    ?>
    Bye

  4. #4
    Membre confirmé
    Avatar de Tesing
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Points : 453
    Points
    453
    Par défaut
    Salut,

    tu peux essayer l'extension Tidy de PHP qui permet de nettoyer du HTML pour le rendre conforme.

    http://fr2.php.net/tidy

    Ca pourrait eviter les plantages avec SimpleXML (en théorie).

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par FCYPBA Voir le message
    PS : Evite d'utiliser @ c'est moche et contreproductif. Les warning et autres joyeusté sont là pour une raison bien précise.
    En production, ces erreurs iront dans les logs fichiers ( et non écran ) que l'on doit consulter régulièrement et te permettront éventuellement d'adapter le programme aux cas rencontrés.
    LE @ justement affiche à l'écran. L'équivalent d'un bon gros print et l'ennui, c'est que je traite justement le texte retourné.
    Donc si tu as aussi une solution pour le retourner dans le log et pas sur l'affichage, ça me sauverait aussi la vie

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par FCYPBA Voir le message
    Bonjour,
    Dans ton cas, il faut que tu parcours l'arbre au moyen des méthodes de l'objet DOMDocument que tu as utilisé auparavant.
    Bingo... ca évite les boulets du web ou autre utilisateur de logiciel qui cause des bugs dans les descriptions
    Merci beaucoup

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/06/2008, 15h02
  2. Réponses: 3
    Dernier message: 16/01/2008, 09h07
  3. Réponses: 4
    Dernier message: 02/05/2006, 12h08
  4. Réponses: 4
    Dernier message: 06/04/2006, 10h07
  5. méthode à utiliser pour annuaire
    Par psyco2604 dans le forum ASP
    Réponses: 2
    Dernier message: 01/06/2004, 15h46

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