Expressions régulières

WRInaute impliqué
Salut
Bon je poste ça dans le "café" mais ce n'est pas une pause... :wink:
Je me rabat sur ce forum qui ne traite pas de programation, mais comme ici il y a des fortiches et que finalement l'urlrewritting utilise des expressions régulières... :D
J'ai cherché partout, j'ai posté sur des forum de prog mais je n'ai pas trouvé... j'espère que ça existe...
Voila mon problème d'expressions régulières (très très simplifié au niveau des masques)
C'est en php, mais ça n'a aucune importance.
Code:
$texte='@texteA& suitedemots @texteB& suitedemots ...';
$texte= eregi_replace("(.+)@(.+)&(.+)","\\1[\\2]\\3",$texte);
lorsque j'affiche $texte
j'ai "@texteA& suitedemots [texteB] suitedemots ..."
alors que je voudrais "[texteA] suitedemots [texteB] suitedemots ..."
Il y a un moyen pour dire "exécute tant que tu en trouve" ou "remplace tout ce qui correspond au masque" dans une expression régulière.
Je ne veux pas utiliser de boucles en php. Je dois vraiment le faire en expressions régulières...
Il ya t-il une instruction dans les expression régulières qui permettent de le faire ?
Merciiiiiiiii
 
WRInaute discret
tu ne peux pas simplement remplacer les @ par '[' et les & par ']' ? (eventuellement avec certaines conditions, p.ex eregi_replace("[ ]@[ ]"," [ ",$texte) etc...)

Ben
 
WRInaute impliqué
bah non.... :wink:
C'est plus compliqué que ça...
Je trouve ça bizarre qu'on ne peut pas préciser que ça fonctionne pour l'ensemble du texte...
En fait mon cas est un peu comme le BBCode dans ce forum
pour un lien, on a
lien1

sachant qu'il peut en avoir une grosse quantité (indéfini) dans le texte, comment faire pour qu'on est après traitement chaque lien de la forme:
<a href="-http://aaaaaaaaa.com">lien1</a>

Je ne me résignerai à découper les chaines de caractères puis à les recoller etc... qu'après avoir écumé le net à la recherche de la solution.... ;-)
Comment fait WRI d'ailleurs?
 
WRInaute discret
En fait je pense que ton problème vient des (.+), techniquement ca signifie prendre n'importe quel caractere une fois ou plus, ca englobe les @ et les &

essaye:

Code:
$texte= eregi_replace("([^@]*)@([^&]+)&([^@]*)","\\1[\\2]\\3",$texte);

Ben
 
Discussions similaires
Haut