Je sais qu'il y a un si/alors dans la correspondance des expressions régulières, mais y en a-t-il une dans le remplacement?preg_replace remplacement conditionnel avec une chaîne différente
ie. Je veux faire dans un regex
"J'ai Foo bars à moins de 5 $ à la vente" pour être "Bars Foo ~ 5 $"
"J'ai Foo Bars à vendre" pour devenir "Foo Bars" et NON "Bars Foo ~"
J'ai une expression un peu comme celui-ci au moment:
preg_replace("/(([A-Z][a-z]*\s){1,3})((under .)\d+)?/","$1~$4",$str);
(avec d'autres bits pour enlever l'autre aswell texte bien sûr!) mais tha t inclut le ~ même quand il n'y a pas de "dessous" dedans.
Je pourrais probablement utiliser preg_replace_callback mais qui semble un peu OTT
Merci.
Pourquoi ne pas comparer les chaînes en PHP ont alors différentes expressions de preg_replace pour eux? Je ne comprends pas pourquoi vous cherchez une façon compliquée de résoudre une solution simple. – theAlexPoon
Oui, dans mon exemple, je pourrais le faire, mais ce que j'essaie de faire consiste à analyser une page de texte et j'aimerais bien la faire dans une expression rationnelle si possible – Vortigern