Discussion:
Gerer les erreurs avec simplexml
(trop ancien pour répondre)
Lann
2009-02-25 14:18:49 UTC
Permalink
Bonjour,

J'ai un script pour traiter du XML transmis via un formulaire de la
forme :

if ($xml = simplexml_load_string($texte_recu)) {
...
}else{
// faire quelque chose
}

D'après la doc, simplexml_load_string() crée un objet ou renvoit FALSE
en cas d'erreur. Mon souci, c'est que si le texte reçu est du XML mal
formé ou pas du XML du tout, PHP affiche plein de messages d'erreurs
et ne se contente pas de renvoyer FALSE.
Pour ne pas avoir ces messages d'erreur et se contenter de ce qui suit
le else, y at'il une autre solution que de mettre "error_reporting
(0);" ? Ca m'embête par rapport aux autres erreurs que peut générer le
script.

Je précise que je ne suis pas un pro de PHP.
Merci d'avance pour les réponses.
Pascal PONCET
2009-02-25 23:05:24 UTC
Permalink
Post by Lann
Pour ne pas avoir ces messages d'erreur et se contenter de ce qui suit
le else, y at'il une autre solution que de mettre "error_reporting
(0);" ? Ca m'embête par rapport aux autres erreurs que peut générer le
script.
Bonjour,

D'une manière générale, les messages d'erreur de type "Warning" peuvent
être cachés en ajoutant un "@" avant l'appel de la fonction qui les
génère (ex: $xml = @ simplexml_load_string($texte)).

Cordialement,
Pascal
Tonio
2009-02-25 23:05:24 UTC
Permalink
Hello,

libxml_use_internal_errors(true);

avant ton simplexml_load_string devrais faire l'affaire.

Tonio.
Post by Lann
Bonjour,
J'ai un script pour traiter du XML transmis via un formulaire de la
if ($xml = simplexml_load_string($texte_recu)) {
   ...}else{
   // faire quelque chose
}
D'après la doc, simplexml_load_string() crée un objet ou renvoit FALSE
en cas d'erreur. Mon souci, c'est que si le texte reçu est du XML mal
formé ou pas du XML du tout, PHP affiche plein de messages d'erreurs
et ne se contente pas de renvoyer FALSE.
Pour ne pas avoir ces messages d'erreur et se contenter de ce qui suit
le else, y at'il une autre solution que de mettre "error_reporting
(0);" ? Ca m'embête par rapport aux autres erreurs que peut générer le
script.
Je précise que je ne suis pas un pro de PHP.
Merci d'avance pour les réponses.
Mickael Wolff
2009-02-25 23:05:24 UTC
Permalink
Post by Lann
J'ai un script pour traiter du XML transmis via un formulaire de la
if ($xml = simplexml_load_string($texte_recu)) {
if ($xml = @simplexml_load_string($texte_recu)) {

@ est l'opérateur de silence.
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Lann
2009-02-26 15:30:27 UTC
Permalink
Merci beaucoup !

Je n'avais pas pensé au "@", il faut que je me le colle dans la tête !
Je ne connaissait pas la fonction libxml_use_internal_errors(), c'est
bon à savoir même si dans mon cas je n'ai pas vraiment besoin de
pouvoir stocker les erreurs.

Loading...