Parseur XML

Rechercher

Parseur XML

Par ZikoNFS  -  4 reponses  -  Le 04/01/2009 00:48  -  Editer  - 

Bonjour,

Je suis entrain de réaliser un Parseur XML ou XML Parser.

J'ai un formulaire que l'internaute vas remplir et renvoyer vers le Parseur XML.

Dans le formulaire, il va utiliser mon propre code pérsonalisé comme le Bbcode pour mettre en forme son texte.

Voici quelques balises qu'on peut utiliser :

  • : pour mettre en gras le texte qui est entre ces balises.
  • : pour mettre en italique le texte qui est entre ces balises.
  • : pour souligne le texte qui est entre ces balises.

Exemple :

Mon Texte ici devient Mon Texte ici en gras

Mon problème :

Si deux balises se chevauche, ce qui est interdit en XML, Php renvoi une erreur.

Exemple :

Si l'internaute écrit Salut

Php me renvoi :

Warning: DOMDocument::loadXML() [domdocument.loadxml]: Opening and ending tag mismatch: gras line 1 and italique in Entity, line: 1 in C:\wamp\www\test\code.php on line 156
Warning: DOMDocument::loadXML() [domdocument.loadxml]: Opening and ending tag mismatch: italique line 1 and gras in Entity, line: 1 in C:\wamp\www\test\code.php on line 156

Au lieu d'afficher cette erreur à l'internaute, j'aimerais lui afficher un simple message comme :

Il y a des erreurs dans le Code :
Les balises <gras> & <italique> s'entremêlent à partir de la ligne 1 :
<italique><gras>Salut</italique></gras>

Merci pour votre aide.

 

Réponses apportées à cette discussion

Par Emacs  -  Le 04/01/2009 01:08  -  Haut de page  - 

Quel code PHP as-tu déjà écrit pour pouvoir avoir cette erreur stp ?

 
Par stopher  -  Le 04/01/2009 18:36  -  Haut de page  - 

Salut ,

Peut être un début de réfléxion , tu récupéres toutes les blises possibles du texte de l'utilisateur ,

tu te retrouve avec un tableau qui sépare les différentes balises ex :

pour "titre1 coucoutitre2"

$array[0] = "titre1";

$array[1] = "coucou";

$array[2] = "titre2";

ect ...

 

Si deux balises se chevauchent , tu te retrouves avec une valeur de ton tableau de ce style :

$array[x] = "titre1";

Le principe est donc de vérifier qu'aucune balise n'apparaisse dans le tableau ..

si c'est le cas , alors , tu annules l'enregistrement , et affiche l'erreur . car un chevauchement est présent .

 

Ce n'est qu'une réfléxion ...

Il y a certainement plus simple .. celà peut dépendre de la façon dont tu "parse" les données ..

 

Good luck ,

Christophe.

 
Par Emacs  -  Le 04/01/2009 21:05  -  Haut de page  - 

Le plus simple c'est forcément de valider la chaine XML par le parser.

 
Par ZikoNFS  -  Le 04/01/2009 21:56  -  Haut de page  - 

Salut,

J'ai tout simplement utiliser ma propre fonction qui gère les erreurs.

set_error_handler('my_error_handler');

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |