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 :

Fonction de remplacement


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 109
    Par défaut Fonction de remplacement
    Bonjour,

    Je recherche une fonction de remplacement, un peu comme str_replace, mais un peu plus puissance.

    Ce que j'aimerais faire.

    C'est remplacer dans une chaîne toutes les occurences d'une chaîne sauf si elle est précédée d'un certain caractère.

    Ex: Chaine = Bonjour \n n allo blabla.

    Remplacer "n" par "e" sauf si elle est précédé de "\" ...

    Merci
    a+

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Alors je proposerai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $chaine = "Bonjour \n n allo blabla.";
    echo $chaine = preg_replace("#n#Usi","e",$chaine);
    Pour moi ca remplace que les n

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Par défaut
    Citation Envoyé par Kerod
    Pour moi ca remplace que les n
    C'est parce-que le \n dans des doubles quotes ne représente pas le caractère n précédé de \ mais bien un retour ligne. La regex ne le remplacera donc jamais et pour cause...

    La solution réside dans l'utilisation des assertions arrières négatives (negative lookbehind):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // supprimer tous les n sauf ceux précédés du caractère z:
    $chaine = 'Bonjour zn n allo blabla.';
    echo $chaine = preg_replace("#(?<!z)n#", "e", $chaine);
    Ou bien, de manière plus classique, avec une classe de caractères négative:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $chaine = preg_replace("#([^z])n#", "$1e", $chaine);

Discussions similaires

  1. comment automatiser la fonction rechercher/remplacer ?
    Par tristan_sauvage dans le forum Access
    Réponses: 4
    Dernier message: 28/12/2006, 17h05
  2. Réponses: 17
    Dernier message: 20/08/2006, 11h00
  3. Fonction qui remplace des caractères spéciaux
    Par ViRouF dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 07/08/2006, 10h24
  4. Les fonctions de remplacement
    Par ribrok dans le forum Langage
    Réponses: 8
    Dernier message: 10/05/2006, 16h42
  5. [SQL ] Fonction pour remplacer caract. speciaux et accentué
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 3
    Dernier message: 31/01/2006, 15h16

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