Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2584 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] recherche de motifs dans une chaîne, regex

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] recherche de motifs dans une chaîne, regex

n°370444
z0rglub
Posté le 24-04-2003 à 14:30:48  profilanswer
 

bonjour à tous
 
J'ai un petit problème pour récupérer des motifs grâce à une expression régulière :
J'ai en entrée cela <market name="Eurex" location="Allemagne" id="EUR" et je veux récupérer les couples "name,Eurex", "location,Allemagne" etc.
 
Voici mon code actuel :

Code :
  1. $element = '<market name="Eurex" location="Allemagne" id="EUR" />';
  2. $regex = '/^<\w+( \w+="[\w\s\/]*" )*/';
  3. preg_match( $regex, $element, $out );
  4. for ( $i = 0; $i < sizeof( $out ); $i++ )
  5. {
  6.   echo "#".htmlentities( $out[$i] ).'#<br />';
  7. }


 
en sortie, j'obtiens :
#<market name="Eurex" location="Allemagne" id="EUR"#
# id="EUR"#
 
au lieu de
#<market name="Eurex" location="Allemagne" id="EUR"#
# name="Eurex"#
# location="Allemagne"#
# id="EUR"#
 
J'ai essayé avec preg_match_all, ça ne marchait pas mieux, mais de toute façon, cela n'avait pas de sens, la bonne fonction, c'est preg_match tout court.
 
Vous savez ce qui manque pour que mon code récupère également les premiers motifs rencontrés ? (là on dirait qu'à chaque fois qu'il rencontre un motif de la même parenthèse, il écrase l'ancien)


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
mood
Publicité
Posté le 24-04-2003 à 14:30:48  profilanswer
 

n°370476
z0rglub
Posté le 24-04-2003 à 14:52:57  profilanswer
 

bon, alors en fait il faut bien utiliser preg_match_all à un moment donné... mais pas parce que je recherche plusieurs fois le motifs, mais parce que visiblement sur un ( \w*)* il écrase à chaque fois qu'il le trouve la valeur d'avant (car le motif peut arriver plusieurs fois...)
 
Ma solution :

Code :
  1. define( ATT_REG, '\w+' );
  2. define( VAL_REG, '[\w\s\/]*' );
  3. $element = '<market name="Eurex" location="Allemagne" id="EUR" />';
  4. $regex = '/^<\w+( '.ATT_REG.'="'.VAL_REG.'" )*/';
  5. preg_match( $regex, $element, $out );
  6. $regex = '/('.ATT_REG.')="('.VAL_REG.')"/';
  7. preg_match_all( $regex, $out[0], $out );
  8. for ( $i = 0; $i < sizeof( $out[0] ); $i++ )
  9. {
  10.   echo $out[1][$i].':'.$out[2][$i].'<br />';
  11. }


 
me fournit en sortie :
 
name:Eurex
location:Allemagne
id:EUR
 
(donc fallait y aller en 2 temps). Maintenant, si vous avez de meilleurs solutions...


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
n°370751
Hermes le ​Messager
Breton Quiétiste
Posté le 24-04-2003 à 16:55:59  profilanswer
 

eregi ?  :whistle:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] recherche de motifs dans une chaîne, regex

 

Sujets relatifs
Meilleur site de scripts PHP ?Ajouter 7 jours à une date [PHP]
Recherche des exemples de code en C sur les arbresRecherche de easyRSS v1.4................
[PHP] Htmlentities-Htmlspecialchars= ?[résolu (problème inexsitant]recherche d'un algourithme d'un interpreteur de commande
[PHP] header() et target (pb avec frames)Script PHP (Gestion de LANs) - On m'a volé mon script :-( !
[PHP] Problème d'upload et affichage de variable[PHP] Besoin d'aide pour une authentification NTLM
Plus de sujets relatifs à : [PHP] recherche de motifs dans une chaîne, regex


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR