Problème avec preg_match et expressions régulières

Problème avec preg_match et expressions régulières - PHP - Programmation

Marsh Posté le 26-03-2010 à 11:10:00    

Bonjour,
 
j'ai un petit problème avec la fonctions preg_match... Jusque là j'utilisais les fonctions ereg pour extraire du contenu d'un XML. Ca ressemblait à ça :
eregi("<BALISE>(.*)</BALISE>",$texte,$contenu);
 
La fonction eregi étant dépréciée j'essaie de la remplacer par un preg_match. J'ai tenter plusieurs choses, mais ça ne marche pas...  
preg_match("#<BALISE>(.*)</BALISE>#",$texte,$contenu);
$contenu est un tableau vide...
 
Est ce que quelqu'un sait comment faire?
 
Merci !  :hello:

Reply

Marsh Posté le 26-03-2010 à 11:10:00   

Reply

Marsh Posté le 26-03-2010 à 12:37:53    

Code :
  1. preg_match("#<BALISE>(.*)</BALISE>#s",$texte,$contenu);


Le s spécifie que le . est aussi égalé au retour a la ligne car dans ton cas il cherche juste une balise contenant du texte sur plusieurs lignes


---------------
Recette cookeo Recette de cuisine
Reply

Marsh Posté le 26-03-2010 à 13:13:37    

Merci beaucoup pour ton aide, ça fonctionne!  :)

Reply

Marsh Posté le 26-03-2010 à 18:42:39    

pour extraire des donnée XML, utilise soit simpleXML soit domdocument

Reply

Marsh Posté le 27-03-2010 à 19:58:23    

Perso si c'est juste une seul donnée je conseil plutôt le preg_metch() si c'est plus qu'une seul donnée je suis d'accord dans ce cas la il vaut mieux SimpleXML voir DomDocument qui est plus rapide il me semble (mais aussi plus tatillon niveau erreur)


---------------
Recette cookeo Recette de cuisine
Reply

Marsh Posté le 29-03-2010 à 12:51:52    

Vaut clairement mieux du SimpleXML/DomDocument... c'est fait pour.
 
Si t'utilises quand même preg_match, rajoute aussi le flag U (ungreedy) après le # sinon tu risques d'avoir des surprises...


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 29-03-2010 à 16:23:43    

stealth35 a écrit :

pour extraire des donnée XML, utilise soit simpleXML soit domdocument


 
Je travaille sur une vieille machine en PHP4 et visiblement il faut PHP5 pour simpleXML ou domdocument. Je vais pas  avoir le choix ce sera du preg_match apriori. Du coup plus quelque chose comme ça ?
preg_match("#<BALISE>(.*)</BALISE>#Us",$texte,$contenu);

Reply

Marsh Posté le 29-03-2010 à 16:26:15    

Tant que t'as pas des <BALISE> à l'intérieur de <BALISE>, ça devrait bien se passer avec ça. [:spamafote]


Message édité par sielfried le 29-03-2010 à 16:26:21

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 29-03-2010 à 16:40:52    

Ok. Merci!

Reply

Marsh Posté le 29-03-2010 à 16:58:56    

electroger a écrit :


 
Je travaille sur une vieille machine en PHP4 et visiblement il faut PHP5 pour simpleXML ou domdocument. Je vais pas  avoir le choix ce sera du preg_match apriori. Du coup plus quelque chose comme ça ?
preg_match("#<BALISE>(.*)</BALISE>#Us",$texte,$contenu);


 
arf mon pauvre  :wahoo:

Reply

Marsh Posté le 29-03-2010 à 16:58:56   

Reply

Marsh Posté le 29-03-2010 à 22:05:29    

Je plussoie, il ne faut pas oublier le U de Ungreedy !


---------------
Directeur Technique (CTO)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed