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 :

xpath et fatal error bloque mon programme


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Points : 97
    Points
    97
    Par défaut xpath et fatal error bloque mon programme
    Bonjour,

    j'utilise un commande de ce type pour lire des pages html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $url_content=".....";
    $dom = new DomDocument;
    $dom -> loadHTML($url_content);
    $xpath = new DomXPath($dom);
    $var= $xpath->query('//a[@class="xxxxxxxxxxx"]')->item(0)->getAttribute('href');
    le problème c'est que parfois me recherche (le noeud DOM) n'existe pas et que ma dernière ligne me renvoi un message "Fatal error: Call to a member function getAttribute() on null ....."
    Ce qui est normal, mai j'aurai aimé que le programme continue quoi qu'il se passe
    j'ai essayé l'utilisation d'arobase (@) ou de TRY ... CATCH...; et je n'arrive pae à faire continuer mon programme

    est ce possible ?

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    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 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Il suffit de remplacer ta ligne par:$domNodeList = $xpath->query('requetexpath'); et de tester la valeur de $domNodeList avant de faire quoi que ce soit. Car si la liste de nœud renvoyée est vide, il n'y a évidemment pas d'item 0.

    À noter que si tu veux extraire l'attribut href du premier lien qui remplit tes conditions, autant écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $var = $xpath->evaluate('string(//a[@class="xxxxxxxxxxx"][1]/@href)');
    Alors il suffit de tester $var pour savoir si la requête à trouver quelque chose.

    NB: Il existe la méthode DOMDocument::loadHTMLFile qui prend en paramètre l'url du fichier à parser (comme ça pas besoin de le charger au préalable dans une variable).
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Points : 97
    Points
    97
    Par défaut
    merci beaucoup ça fonctionne, mais peux tu m'expliquer pourquoi la fonction STRING est si importante dans l'histoire stp ?

    également comment cela se traduit quand je dois lire "->nodevalue"

    merci

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    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 858
    Points : 6 556
    Points
    6 556
    Par défaut
    La fonction XPath string() permet de forcer la méthode DOMXPath::evaluate à renvoyer un résultat typé (voir manuel à propos des valeurs de retour).

    Pour ce qui est de ta deuxième question, ça serait bien de prendre un peu le taureau par les cornes et de te hasarder à quelques var_dump().
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

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

Discussions similaires

  1. error dans mon programme
    Par jacky007 dans le forum Fortran
    Réponses: 1
    Dernier message: 29/12/2009, 00h10
  2. probleme de recv qui bloque mon programme
    Par ing2009 dans le forum Réseau
    Réponses: 0
    Dernier message: 06/05/2009, 16h23
  3. Erreur qui bloque mon programme
    Par bugland dans le forum Langage
    Réponses: 6
    Dernier message: 21/12/2006, 22h32
  4. Réponses: 3
    Dernier message: 25/07/2006, 17h46
  5. Réponses: 2
    Dernier message: 29/12/2005, 10h25

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