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 :

preg_replace > tout sauf $chaine ? [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 20
    Par défaut preg_replace > tout sauf $chaine ?
    Bonjour !

    Aucun soucis au niveau de l'utilisation "basique" du preg_replace, seulement là ou je bloque, c'est :

    -Comment nettoyer une chaine en gardant QUE ce que je précise dans une autre chaîne ?

    -Je sais vérifier si il n'y a que tel ou tel caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // exemple :
    !preg_match("`^[1234567890]{1,10}$`", $chaine)

    Mais je ne sais pas remplacer tout autre caractère que ceux listés dans une chaine.


    Exemple de ce que j'aimerais pouvoir faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ce_que_je_veux_garder ='abcdefghijklmnopqrstuvwxyz1234567890 ';
     
    $la_chaine_a_traiter = 'salut ca va ? ++ mon num = 0606060606';
     
    //application du preg
     
    //résultat : "salut ca va mon num 0606060606"
    //tous les caractères n'étant pas contenus dans "$ce_que_je_veux_garder" ont été enlevé.



    Voilà si vous pouvez m'éclairer cela serait sympa !

  2. #2
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Avec la classe de caractères
    [abcdefghijklmnopqrstuvwxyz1234567890 ]
    pouvant s'écrire ainsi
    [a-z0-9 ]

    a-z represente les lettres (de a à z inclus).
    0-9 represente les chiffres (de 0 à 9 inclus).

    La recherche est fructueuse (le remplacement a lieu) pour les lettres et les chiffres.

    Pour l'effet inverse, il suffit que le premier caractère de la classe soit un accent circonflexe ^, qui représente une négation.

    Nous obtenons ainsi
    [^abcdefghijklmnopqrstuvwxyz1234567890 ]
    ou plus simplement
    [^a-z0-9 ]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $a_garder ='a-z0-9 ';
    $chaine   = preg_replace('/[^'.$a_garder.']/', '', $chaine);
    ?>
    Voir les classes de caractères.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 20
    Par défaut
    Merci !

    c'est exactement ce que je voulais !


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

Discussions similaires

  1. Regex : tout sauf une chaine
    Par Matthieu MEZIL dans le forum C#
    Réponses: 3
    Dernier message: 16/03/2014, 12h05
  2. SELECT "tout sauf champs xx, yy..."
    Par _marabout dans le forum Requêtes
    Réponses: 7
    Dernier message: 21/01/2008, 17h42
  3. [RegEx] Tout sauf un mot dans une REGEX?
    Par Death83 dans le forum Langage
    Réponses: 4
    Dernier message: 02/08/2006, 11h12
  4. Réponses: 31
    Dernier message: 22/02/2006, 17h31
  5. [RegEx] preg_replace et interdir une chaine
    Par jojo22222 dans le forum Langage
    Réponses: 9
    Dernier message: 19/02/2006, 21h46

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