Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Gerer les erreurs avec simplexml

4 réponses
Avatar
Lann
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.

4 réponses

Avatar
Pascal PONCET
Lann a écrit :
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
Avatar
Tonio
Hello,

libxml_use_internal_errors(true);

avant ton simplexml_load_string devrais faire l'affaire.

Tonio.

On Feb 25, 3:18 pm, Lann wrote:
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.


Avatar
Mickael Wolff
Lann wrote:
J'ai un script pour traiter du XML transmis via un formulaire de la
forme :

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
Avatar
Lann
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.