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 :

filtrer les lettres/chiffres


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 76
    Points : 49
    Points
    49
    Par défaut filtrer les lettres/chiffres
    Bonjour,

    Je souhaite écrire une fonction qui prenne en entrée une chaine de caractère quelconque, et qui, grâce à une RegExp, remplace tout ce qui n'est pas une des 26 lettres, et tout ce qui n'est pas un chiffre, par un underscore.

    Merci.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $out = preg_replace('/[^[:alnum:]]/', '_', $in);
    ?

    [:alnum:] est une classe qui représente l'ensemble des caractères alphabétiques et numériques qui est niée (négation de classe). Donc tout caractère n'appartenant pas à cet ensemble sera remplacé par un underscore.

  3. #3
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Après, si tu veux te le faire a la main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    /**
     * Cette fonction prend une string et remplace tous les caracteres non alphabetique par _
     * @param string $word : Le mot a traiter
     * @return string : Le mot propre.
     */
    function replace_letter($word) {
      $new_word = '';
      $i = 0;
      while (isset($word[$i])) {
        if (ctype_alpha($word[$i]))
        	$new_word .= $word[$i];
        else
    	    $new_word .= '_';
        $i++;
      }
      return ($new_word);
    }
    Mais la solution du regexp me semble nettement plus élégante ^_^
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  4. #4
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Mais la solution du regexp me semble nettement plus élégante ^_^
    Surtout : elle tient en une seule ligne

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Points : 197
    Points
    197
    Par défaut
    mais le probleme les mec c'est que vous avais pas bien lu le sujet
    lol

    ou si c'est sa qu'il veut il a pas poser la bonne question car avec la classe [:alnum:] les lettres comme é,à,ç,ñ et tous type d'accent sont accepter par cette classe hors lui ne veut que

    des 26 lettres
    Donc tous se qui a un accent il en veut pas


    il faut donc remplacer [:alnum:] par [a-zA-Z0-9] qui permet de ne garder que les 26 lettre (majuscule ou minuscule)plus tous les chiffres

Discussions similaires

  1. [XL-2007] filtrer les premières lettres d'un mot en tapant dans un combobox vba excel
    Par chombriko dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/05/2012, 12h20
  2. Réponses: 1
    Dernier message: 13/04/2005, 14h41
  3. Réponses: 3
    Dernier message: 27/07/2004, 12h01
  4. Filtrer les voyelles
    Par Babyneedle dans le forum Langage SQL
    Réponses: 9
    Dernier message: 22/12/2003, 15h12
  5. peut on filtrer les adresses IP ?
    Par travail dans le forum 4D
    Réponses: 2
    Dernier message: 04/06/2003, 14h16

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