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 des caractères dans une chaine


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut Remplacement des caractères dans une chaine
    Bonjour,
    Dans les sources sur ce site, j'ai trouvé ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $str = "On remplace les lettres accentutées par les non accentuées";
    $str = strtr($str,
         'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
         'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); 
    //On remplace les lettres accentutées par les non accentuées dans $str.
    //Et on récupère le résultat dans $str
     
    //En dessous, il y a l'expression régulière qui remplace tout ce qui n'est pas une lettre non accentuées ou un chiffre
    //dans $str par un tiret "-" et qui place le résultat dans $str.
    $str = preg_replace('/([^.a-z0-9]+)/i', '-', $str);
    echo $str;
    Ce script a pour but de remplacer les lettres accentutées par les non accentuées.

    Par contre comme résultat, j'ai ceci :
    On-remplace-les-lettres-accentuty-es-par-les-non-accentuy-es
    Quelqu'un pourrait m'aider ?

    Merci d'avance...

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Quelqu'un pourrait m'aider ?
    Oui... mais t'aider à faire quoi ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    Le résultat n'est correct. é n'est pas remplacé par e.

    Merci d'avance...

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    C'est un problème d'encodage des caractères. utf-8 encode les caractères accentués sur plus d'un octet ce qui pose problème.
    Il faut passer par un tableau :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <?php
    $str = "On remplace les lettres accentutées par les non accentuées";
    $str = strtr($str,
         array(
    	'À'=>'A',
    	'Á'=>'A',
    	'Â'=>'A',
    	'Ã'=>'A',
    	'Ä'=>'A',
    	'Å'=>'A',
    	'Ç'=>'C',
    	'È'=>'E',
    	'É'=>'E',
    	'Ê'=>'E',
    	'Ë'=>'E',
    	'Ì'=>'I',
    	'Í'=>'I',
    	'Î'=>'I',
    	'Ï'=>'I',
    	'Ò'=>'O',
    	'Ó'=>'O',
    	'Ô'=>'O',
    	'Õ'=>'O',
    	'Ö'=>'O',
    	'Ù'=>'U',
    	'Ú'=>'U',
    	'Û'=>'U',
    	'Ü'=>'U',
    	'Ý'=>'Y',
    	'à'=>'a',
    	'á'=>'a',
    	'â'=>'a',
    	'ã'=>'a',
    	'ä'=>'a',
    	'å'=>'a',
    	'ç'=>'c',
    	'è'=>'e',
    	'é'=>'e',
    	'ê'=>'e',
    	'ë'=>'e',
    	'ì'=>'i',
    	'í'=>'i',
    	'î'=>'i',
    	'ï'=>'i',
    	'ð'=>'o',
    	'ò'=>'o',
    	'ó'=>'o',
    	'ô'=>'o',
    	'õ'=>'o',
    	'ö'=>'o',
    	'ù'=>'u',
    	'ú'=>'u',
    	'û'=>'u',
    	'ü'=>'u',
    	'ý'=>'y',
    	'ÿ'=>'y'
    	)); 
    //On remplace les lettres accentutées par les non accentuées dans $str.
    //Et on récupère le résultat dans $str
     
    //En dessous, il y a l'expression régulière qui remplace tout ce qui n'est pas une lettre non accentuées ou un chiffre
    //dans $str par un tiret "-" et qui place le résultat dans $str.
    $str = preg_replace('/([^.a-z0-9]+)/i', '-', $str);
    echo $str;
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/05/2012, 12h06
  2. Remplacer des caractères dans une chaine et enlever certains
    Par Lucas Panny dans le forum SL & STL
    Réponses: 6
    Dernier message: 12/01/2009, 14h26
  3. Réponses: 4
    Dernier message: 14/11/2008, 21h00
  4. 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
  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