2 preg_replace en 1 ? [regex] - PHP - Programmation
Marsh Posté le 31-03-2006 à 11:41:49
Code :
|
edit: après reflexion ça merdoie, vu que ça vire le é ... je réfléchis je reviens
edit2: donc avec un exec au milieu ... ça devient vraiment dégeux mais bon
Code :
|
Marsh Posté le 31-03-2006 à 12:43:25
Salut
Oula ca merdoie grave en effet, il doit y avoir des problemes de guillemets j'ai des parse error , je vais voir ce qui va po
Merci du coup de main
Marsh Posté le 31-03-2006 à 13:22:17
nan ça marche c'est le forum qui remplace la premiere " par $#34; le code aurait du etre
preg_replace('!(Dossier)(.+)(s|é)$!e', "'$1s$2'.('$3'=='é'?'és':'s')", $lib_etat); |
Marsh Posté le 31-03-2006 à 14:34:58
Ah ok
Bon, je vais essayer de comprendre comment tu as fait ^^
Si le metier de traducteur regex / francais existait je pense que ce serait un des jobs ou yaurait le plus de suicide ^^
edit: ha petite probleme, de ma faute puisque je ne t'ai pas donné toutees les solutions pour la forme 1.
Dossiers en attente des pièces initiales
Dossier en attente de lavis du médecin de prévention
Dossiers en attente de pièces complémentaires
Dossier en attente dengagement
Dossiers en attente dinformations
Dossiers refusés
Dossiers engagés
Dossiers clos
Dossiers ajournés
Il manque des s ^^
Marsh Posté le 31-03-2006 à 14:48:20
preg_replace('!(Dossier)(.+)(s|é)$!e', "'$1s$2'.('$3'=='s'?'s':'$3s')", $s); |
edit: ah ba non j'ai lu trop vite j'ai juste regardé la fin
donc tu pourrais faire:
preg_replace('!(Dossier)(.+?)(.)$!e', "'$1s$2'.('$3'=='s'?'s':'$3s')", $s); |
Mais ça marcherait pas non plus vu que ça rajouterais trop de s
tu pourrais aussi rusé en faisant:
print preg_replace('!(Dossier)(.+)(.)$!e', "'$1s$2'.('$3'=='é'?'$3s':'$3')", $s) |
là ça doit marcher ...
Mais encore une fois je trouve que c'est vraiment bien compliqué pour par grand chose...
Un str_replace sur dossiers, un autre sur le é final et c'est bien plus simple/clair/maintenable/optimisé
Marsh Posté le 31-03-2006 à 15:01:55
Ok lol merci beaucoup pour t'avoir creusé la tete
Ma solution du premier post est donc la moins compliquée mais OK ?
Allez ca roule, je garde mon ptit truc
ps: j'adore ton expression "merdoie" je crois que je vais la ressortir souvent
Marsh Posté le 31-03-2006 à 11:24:05
Salut
J'aurais voulu savoir si les regex permette de faire en 1 seul preg_replace ce que je fais en 2 preg_replace.
A savoir:
j'ai une variable de texte qui contient une phrase. Or je veut mettre cette phrase au pluriel (le mot dossiers et l'ajectif si il y'en a un)
cette phrase peut etre de 2 forme différentes :
forme 1:
Dossier en attente dinformations //le mot dossier suivi de plusieurs mots. Seul le mot "dossier" est à mettre au pluriel
forme 2:
Dossier refusé //le mot dossier suivi d'un adjectif : les 2 mots sont a mettre au pluriel.
Dossier engagé
Dossier ajourné
Je m'en suis sorti en utilisant 2 fonctions:
$lib_etat = preg_replace('!(Dossier)(.+)!', '$1s$2', $lib_etat);
$lib_etat = preg_replace('!(Dossiers\s)(refusé|engagé|ajourné)!', '$1$2s', $lib_etat);
Est il possible de reunir ces 2 fonction en 1 seul?
merci
Message édité par bixibu le 31-03-2006 à 11:24:30