Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
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 29/04/2008, 17h43   #1
Invité régulier
 
Inscription : décembre 2006
Messages : 10
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2006
Messages : 10
Points : 6
Points : 6
Par défaut Modification de chaine de caractères

Bonjour,

C'est un de mes premiers posts, je n'ai pas trouvé d'endroit où me présenter, y a-t-il un endroit dédié ?

Sinon : je suis étudiant en BTS Informatique de Gestion, j'ai une moto, j'habite dans une ville, je suis humain, et j'ai un petit "problème" sur un script et je suis mauvais en expressions régulières.

J'aimerais transformer une chaine de caractère : "CacaBoudin"

En une autre chaine de caractère : "caca_boudin"

(vous noterez la finesse de mes exemples...)

Je ne trouve pas la fonction qui permet de trouver à quel endroit (entier donc) se situent un certain caractère (les majuscules) (edit: strpos ?)
Je ne trouve pas la fonction qui permet d'insérer un caractère à un endroit précis d'une chaine (un _ avant chaque majuscule qui ne débute pas la chaine).

Enfin, je pense pouvoir utiliser la fonction strtolower...

Auriez vous une idée de comment je pourrais faire ça ?

Merci d'avance

PS : j'ai utilisé la fonction recherche
Maveck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 17h59   #2
Rédacteur/Modérateur
 
Avatar de marcha
 
Homme Marc Chappuis
Développeur Web
Inscription : décembre 2003
Messages : 1 535
Détails du profil
Informations personnelles :
Nom : Homme Marc Chappuis
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2003
Messages : 1 535
Points : 2 206
Points : 2 206
A tester car je suis pas une brute en regexp :-)

Code :
1
2
 
  preg_replace("/^(.[^A-Z]*)([A-Z])([^A-Z]+)$/", "$1_$2$3", 'CacaBoudin');
Voici une doc sympa http://www.lumadis.be/regex/tuto_pcre.php
__________________
Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !
marcha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 18h12   #3
Invité régulier
 
Inscription : décembre 2006
Messages : 10
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2006
Messages : 10
Points : 6
Points : 6
Je vais tester ça, mais je ne suis pas sûr de bien comprendre le $1_$2$3, c'est automatique le fait qu'il comprenne que $1 c'est la première partie de l'expression régulière ?

Edit : alors :

Code :
preg_replace("/^(.[^A-Z]*)([A-Z])([^A-Z]+)$/", "$1_$2$3", "CacaBoudin")
Donne :
"Caca_Boudin"

C'est impec, donc la fonction que je recherchais c'est :

Code :
strtolower(preg_replace("/^(.[^A-Z]*)([A-Z])([^A-Z]+)$/", "$1_$2$3", "$nom2"))
Edit 2 : en fait je n'aurais jamais de ChaineAvecPleinDeMajuscules, mais au maximum des ChainesAvec DeuxMajuscules. Donc l'expression régulière couplée à preg_replace fonctionne très bien.

Merci beaucoup, la solution est trouvée, je note le sujet comme résolu !
Merci Marcha pour le lien et la solution
Maveck 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 23h49.


 
 
 
 
Partenaires

Hébergement Web