|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() |
Bonjour,
Voilà, j'ai essayé de mettre en place une expression régulière me permettant de sortir des arguments dans une chaine de caractères : Ma chaine type : Code :
<!-- DESIGNATION commande1="valeur1" commande2="valeur2" ... --> Code :
preg_match("#<!-- (.*?) (.*?=.*?) -->#",$value,$matches); donc comment puis-je attraper mes commandes séparément ? de manière à ce que mon tableau $matches sépare bien toutes les commandes ? Merci pour votre aide ^^ |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Inscription : août 2004 Messages : 454 ![]() |
Bonjour,
est-ce que par hasard le terme de 'commande' serait invariable ? Si c'est le cas il faudrait faire un masque plus "restreint"
__________________
Règle n°1 du forum francophone : Parler le français... Pas de question technique par MP, le forum est fait pour çà, merci. |
|
|
00
|
|
|
#3 | |
|
Membre du Club
![]() |
Citation:
le but est de récupérer des paramètres qui peuvent être dans ma balise au nombre de 0, 1, 2 etc ... avec des valeurs différentes. |
|
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Inscription : août 2004 Messages : 454 ![]() |
Et je suppose qu'un explode sur les espaces ne conviendrait pas, puisque tes valeurs peuvent en contenir ?
__________________
Règle n°1 du forum francophone : Parler le français... Pas de question technique par MP, le forum est fait pour çà, merci. |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() |
Oui assurément ^^ c'est pour celà que je recherche un motif qui puisse me permettre de récupérer mes arguments séparément. J'avoue être un peu minable sur les expressions régulières.
|
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() Inscription : août 2004 Messages : 454 ![]() |
Voui mais entre minables on se sent un peu moins seuls
![]() Essaye çà
__________________
Règle n°1 du forum francophone : Parler le français... Pas de question technique par MP, le forum est fait pour çà, merci. |
|
|
00
|
|
|
#7 | ||
|
Membre du Club
![]() |
ça ne fonctionne pas ... car ça me parse n'importe quelle chaine...
j'ai modifié comme ça : Code :
elseif(preg_match_all('#<!-- (.*?) ([^\s]+=".*?") -->#',$value,$matches)) Voici le retour du preg_match_all : Code :
|
||
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() Inscription : août 2004 Messages : 454 ![]() |
Tu peux me donner une ligne complète parce que moi çà marche...
__________________
Règle n°1 du forum francophone : Parler le français... Pas de question technique par MP, le forum est fait pour çà, merci. |
|
|
00
|
|
|
#9 | ||||
|
Membre du Club
![]() |
voici ma classe :
Code :
Code :
j'ai fait un exit(var_dump($matches)); pour afficher le résultat de l'opération lorsque ma ligne de boucle est traitée par le compilateur. |
||||
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() |
Bon voici ce que j'ai trouvé. Jusque là si je fais :
Code :
preg_match_all('#<!-- (.*?) (.*?=".*?") (.*?=".*?") -->#',$value,$matches); Est-il possible d'éviter de répéter cinquante fois (.*?=".*?") pour récupérer tous les arguments ??? |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 2 288 ![]() |
(.*?=".*?")+
|
|
|
00
|
|
|
#12 | ||
|
Membre du Club
![]() |
ça a l'air de fonctionner, mais apparemment j'ai le preg_match_all qui ne me capture que la dernière occurence de mon motif.
mes données : Code :
<!-- MABOUCLE commande="variable" commande2="variable2" commande3="variable3" commande4="variable4" --> Code :
preg_match_all('#<!-- (.*?) ((.*?)="(.*?)")* -->#',$value,$matches) Code :
En plus il m'a pris un espace avant "commande4" alors que j'aimerais qu'il ne me le prenne pas. Merci de votre aide. |
||
|
|
00
|
|
|
#13 | ||||
|
Membre éclairé
![]() Inscription : août 2004 Messages : 454 ![]() |
Me revoilà
Alors j'ai çà : Code :
et voilà ce qu'elle donne : Code :
Pour ma part je trouve le masque un peu spécial et le résultat aussi... mais bon si çà peut te convenir...
__________________
Règle n°1 du forum francophone : Parler le français... Pas de question technique par MP, le forum est fait pour çà, merci. |
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com