Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/11/2006, 13h59   #1
Membre habitué
 
Inscription : novembre 2004
Messages : 398
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 398
Points : 115
Points : 115
Par défaut remplacement de mot en respectant l'orthographe

salut

J'ai des chaînes du genre editParameter, deleteParameter, etc. (il s'agit de noms de fonctions)

Je voudrais remplacer le premier mot par list et que le deuxième soit mis au pluriel (tous les mot sont en anglais). Pour l'exemple ci-dessus je devrais donc obtenir listParameters.

J'ai tenté ceci :

Code :
1
2
3
 
$string = 'editParameter';
$res = ereg_replace("([a-z]+)([A-Z][a-z]+)", "list\\2s", $string);
ça fonctionne correctement dans cet exemple mais si j'ai une chaîne du genre editCategory j'obtiens listCategorys alors que je devrais avoir listCategories. Idem pour editMatch pour lequel je devrais avoir listMatches

Est-ce que quelqu'un peut m'aider à corriger les problèmes d'orthographe de mon expression ?


Merci d'avance

JuTs
JuTs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2006, 14h30   #2
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
Faudrait déja que tu recences tout les cas possibles, apres tu viens voir de quel type est ton string, apres tu pourra appliquer le bon regexp pour chaque cas.

Voila.
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2006, 15h55   #3
Membre habitué
 
Inscription : novembre 2004
Messages : 398
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 398
Points : 115
Points : 115
Les cas possible de quoi ? Le premier mot ou les différents pluriel ?

Pour le premier, je n'ai pas de liste définie.
Pour le deuxième je ne vois pas d'autres cas que ceux que j'ai indiqué.
JuTs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2006, 17h08   #4
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
bah y => ies c'est pas compliqué, mais c'est dans l'autre cas que tu dois faire une liste

ch => ches ... etc ...
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 20h25   #5
Membre habitué
 
Inscription : novembre 2004
Messages : 398
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 398
Points : 115
Points : 115
Bon, j'ai finalement procédé ainsi :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$string = 'editTest';
 
//remplacement du premier mot par "list"
$string = ereg_replace("([a-z]+)([A-Z][a-z]+)", "list\\2", $string);
 
//cas des mots en -y
$string = ereg_replace("^([A-Za-z]+)(y)$", "\\1ies", $string);
 
//cas des mots en ch, is, hs, sh, x, z
$string = ereg_replace("^([A-Za-z]+)(ch|is|s|sh|x|z)$", "\\1\\2es", $string);
 
//dans les autres cas on ajoute un s à la fin
$string = ereg_replace("^([A-Za-z]+)([^s])$", "\\1\\2s", $string);

Je suis ouvert à toute suggestion si quelqu'un à une solution plus courte ou plus simple. Ou si j'ai oublié un cas.
JuTs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 21h11   #6
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
c'est pas mal du tout, c'est en tout cas le plus simple.

par contre je ferai des preg_replace (PCRE) plutot que des EREG.
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2006, 11h07   #7
Membre habitué
 
Inscription : novembre 2004
Messages : 398
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 398
Points : 115
Points : 115
Citation:
Envoyé par Maxoo
par contre je ferai des preg_replace (PCRE) plutot que des EREG.
Pourquoi ? C'est plus rapide ?
JuTs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2006, 12h44   #8
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
Citation:
Envoyé par JuTs
Pourquoi ? C'est plus rapide ?
Voui !!

http://www.lumadis.be/regex/tuto_pcre.php#rapide
lis tout ça si tu veux

Sinon si tu sais pas comment écrire un regexp en PCRE, je peux te traduire ce que tu as écris en POSIX (ereg)
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2006, 10h07   #9
Membre habitué
 
Inscription : novembre 2004
Messages : 398
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 398
Points : 115
Points : 115
Citation:
Envoyé par Maxoo
Pas le temps de lire maintenant mais c'est dans les favoris.


Citation:
Envoyé par Maxoo
Sinon si tu sais pas comment écrire un regexp en PCRE, je peux te traduire ce que tu as écris en POSIX (ereg)
Je sais PCRE il faut mettre des délimiteur, je dois changer autre chose à part ça ?
JuTs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2006, 10h16   #10
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
Code :
$string = ereg_replace("^([A-Za-z]+)([^s])$", "\\1\\2s", $string);
devient
Code :
$string = preg_replace("#^([A-Za-z]+)([^s])$#", $1.$2."s", $string);
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2006, 12h48   #11
Membre habitué
 
Inscription : novembre 2004
Messages : 398
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 398
Points : 115
Points : 115
ok, c'est bon.
JuTs est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h23.


 
 
 
 
Partenaires

Hébergement Web