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 :

Regex pour les accents et autres


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Points : 102
    Points
    102
    Par défaut Regex pour les accents et autres
    Bonjour,

    Connaissez vous le regex utilisé sur dotclear qui permet pour le rewrinting de changer un terme comme celui-ci

    Google Code Jam 2006 : c'est parti !

    Par ceci

    google-code-jam-2006-c-est-parti

    -Donc apparement, il supprime(ou remplace par rien) les carctères interdits dans un url comme @*%&/ etc....
    -Le majuscule passe en minuscule
    - les espaces sont remplacés par un -
    Etc...

    Existe t'il un regex qui fasse tout ça (si seulement vous me répondrez peut-être... rire)

    D'avance merci de vos tuyaux
    Cordialement
    Yule

  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
    Points : 20 778
    Points
    20 778
    Par défaut
    Je dirais que tu as une partie de la réponse ici : Initiation aux expressions régulières en PHP

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    Salut,

    à mon avis, il s'agit de plusieurs opérations à la suite :
    - passage de la chaîne en minuscules via strtolower()
    - remplacements via une RegExp ou str_replace()

    En général, il est préconisé de "whitelister" plutôt que "blacklister" les caractères d'une chaîne, donc de lister ceux qu'on veut au final et d'écarter tous les autres.
    Ici, on remarque 2 types de modifications : ":", l'espace et l'apostrophe sont remplacés par un tiret, le reste est supprimé. On remarque également que " : " ne donne qu'un unique tiret et pas 3.

    Concernant les accents, ton exemple n'en montre pas et j'avoue ne pas savoir comment il procède.
    Un exemple rapide de code permettant la transformation que tu donnes, avec chaque étape bien détaillée. C'est surement possible de l'améliorer, mais ça fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?
    	$str = "Google Code Jam 2006 : c'est parti !";
    	// passage en minuscules
    	$str = strtolower($str);
    	// remplacement des caractères voulus non alphanumériques par des tirets
    	$str = ereg_replace("[: ']", "-", $str);
    	// suppression des tirets en trop
    	$str = ereg_replace("[-]{2,}", "-", $str);
    	// suppression de tous les caractères non voulus
    	$str = ereg_replace("[^-a-z0-9]", "", $str);
    	// suppression de l'éventuel tiret de fin
    	$str = ereg_replace("-$", "", $str);
    ?>

  4. #4
    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
    Points : 20 778
    Points
    20 778
    Par défaut
    Pour le passage en minuscule c'est pas obligé on peut le faire directement avec les expressions régulières en mettant
    i
    Permet de ne pas tenir compte de la casse. Ainsi, les masques [a-z], [A-Z] et toutes leurs variantes sont équivalents. Il est inutile de préciser [a-zA-Z], ce qui peut être pratique dans de nombreux cas.
    A la fin du masque

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    Oui, mais dans l'exemple, on a bien un passage en minuscules
    "Google Code Jam" |-> "google-code-jam"

Discussions similaires

  1. [RegEx] Regex pour les entiers
    Par kenny.kev dans le forum Langage
    Réponses: 3
    Dernier message: 10/04/2008, 09h56
  2. pour les avi et autres
    Par resirouge dans le forum SUSE
    Réponses: 1
    Dernier message: 14/12/2007, 10h31
  3. Fonction à utiliser pour remplacer les accents et autres caractères
    Par Christophe Charron dans le forum Langage
    Réponses: 2
    Dernier message: 05/08/2007, 12h50
  4. Code ascii pour les accents ?!
    Par ender08450 dans le forum C++
    Réponses: 4
    Dernier message: 29/12/2006, 01h32

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