IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Remplacement et ajout de caractères dans une chaine [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 59
    Points
    59
    Par défaut Remplacement et ajout de caractères dans une chaine
    Bonjour à tous,
    Je cherche une piste pour résoudre un petit souci :
    J'ai une série de variable nommée dans ce type :
    LaFonctionDeSauve ou encore VariableDeSession.
    Ma problématique est d'enlever les majuscules et d'inserer des _ du style :
    la_fonction_de_sauve.
    Je sais pas trop comment m'y prendre..
    J'ai essayé un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace('/[A-Z]/', "_",$tableau_qui_contient_nom_variable);
    mais ca m'insere bien un _ sans pour autant me conserver la majuscule en minuscule..
    Merci de votre aide

  2. #2
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Bonsoir,

    Et en deux étapes, cela conviendrait-il ?
    Code php non testé : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    preg_replace('/([A-Z])/', "_$1", $myString);
    $myString = strtolower($myString);

  3. #3
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    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 127
    Points : 2 557
    Points
    2 557
    Par défaut
    C'est incomplet
    Et puis on peut quand même l'écrire sur une seule ligne !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $myString = substr(strtolower(preg_replace('/([A-Z])/', '_$1', $myString)),1);
    echo $myString;

  4. #4
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par Maxoo Voir le message
    C'est incomplet
    Et puis on peut quand même l'écrire sur une seule ligne !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $myString = substr(strtolower(preg_replace('/([A-Z])/', '_$1', $myString)),1);
    echo $myString;
    Voui on peut. Mais pourquoi ? Ca m'a pris 5 minutes pour comprendre le code, ce qui est beaucoup trop pour deux lignes. C'est du php, pas du perl (pas taper les mongueurs, it's a joke)

    Par contre, c'est vrai que c'était incomplet.

    Code php validé : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $myString = "LaFonctionDeSauve";
    // regex pour remplacer les majuscules par une lettre préfixée par un underscore. Sauf la première lettre de la ligne.
    $myString = preg_replace('/(?<!^)([A-Z])/', "_$1", $myString);
    $myString = strtolower($myString);
    print $myString;

  5. #5
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    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 127
    Points : 2 557
    Points
    2 557
    Par défaut
    Tu m'expliques comment ça marche ton C'est cool, je connaissais pas ?

    P.S : moi aussi j'ai mis 5 minutes à lire ton code

  6. #6
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par Maxoo Voir le message
    Tu m'expliques comment ça marche ton C'est cool, je connaissais pas ?
    C'est une assertion type "look-behind" (j'ai appris sur un bouquin en anglais).
    Tu en sauras plus en suivant ce lien : http://g-rossolini.developpez.com/tu...e=page_2#LII-8

    Citation Envoyé par Maxoo Voir le message
    P.S : moi aussi j'ai mis 5 minutes à lire ton code
    Oui, mais pour le coup, ça vient de Perl les regex
    Plus sérieusement, ces bestioles sont puissantes mais effectivement toujours un peu compliquées à lire.

  7. #7
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    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 127
    Points : 2 557
    Points
    2 557
    Par défaut
    Terrible !!

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 59
    Points
    59
    Par défaut
    Terrible
    C'est ce fameux $1 que je connaissais pas, combiné avec strtolower !
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/11/2008, 21h00
  2. Remplacer des caractères dans une chaine interbase 7.5
    Par zaydoun_391 dans le forum InterBase
    Réponses: 1
    Dernier message: 15/04/2008, 16h57
  3. Ajouter le caractère " dans une chaine
    Par Zep37 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/02/2008, 13h47
  4. Ajout d'un caractère dans une chaine
    Par JCT77 dans le forum Langage
    Réponses: 8
    Dernier message: 25/03/2007, 22h22
  5. Réponses: 4
    Dernier message: 29/08/2006, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo