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 :

Replacement de caractères accentués et spéciaux


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 147
    Points : 120
    Points
    120
    Par défaut Remplacement de caractères accentués et spéciaux
    Bonjour,

    Je me suis fait une petit fonction pour remplacer tout les accents et caractères spéciaux d'une chaine, ainsi que les espaces et autre spécialités.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function FormatterChaine($strChaine) {
    	$strChaine = strtolower($strChaine);
    	$strChaine = html_entity_decode($strChaine, ENT_QUOTES, 'UTF-8');
     
    	$t_Search = array('|[éèêë]|i','|[àâä]|i','|[îï]|i','|[ûùü]|i','|[ôö]|i','|[ç]|i','|[^a-zA-Z0-9]|');
    	$t_Replace = array('e','a','i','u','o','c','-');
    	$strChaine = preg_replace($t_Search, $t_Replace, $strChaine);	
     
    	$strChaine = preg_replace('|-+|', '-', $strChaine);	
     
    	return $strChaine;
    }
    Seulement elle ne fonctionne pas exactement comme je le voudrais. En effet, à chaque fois qu'il remplace un accent, il ajoute un "e" juste avant, soit le premier élément de mon tableau $t_Replace.

    Par exemple "Tir à l’arc" devient "tir-ea-l-arc" au lieu de "tir-a-l-arc".
    "Déjà" devient "deejea" au lieu de "deja".

    D'où peut venir ce problème ?

    Et au passage si vous avez des propositions pour améliorer la fonction, c'est avec grand plaisir que je les reçoit.

  2. #2
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut


    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function FormatterChaine($strChaine) {
    	$strChaine = strtolower($strChaine);
    	$strChaine = html_entity_decode($strChaine, ENT_QUOTES, 'UTF-8');
     
    	$strChaine = strtr($strChaine, 'éèêëàâäîïûùüôöç', 'eeeeaaaiiuuuooc');
    	$t_Search = array('|[^a-zA-Z0-9]|');
    	$t_Replace = array('-');
    	$strChaine = preg_replace($t_Search, $t_Replace, $strChaine);	
     
    	$strChaine = preg_replace('|-+|', '-', $strChaine);	
     
    	return $strChaine;
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 147
    Points : 120
    Points
    120
    Par défaut
    Hello et merci pour ta réponse.

    Il y a le même problème avec ton code, sauf que cette fois c'est un "c" qui est ajouté, soit le dernier caractère de ta chaine de remplacement...

  4. #4
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    si tu fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function FormatterChaine($strChaine) {
    	$strChaine = strtolower($strChaine);
    	$strChaine = html_entity_decode($strChaine, ENT_QUOTES, 'UTF-8');
     
    	$strChaine = strtr($strChaine, 'éèêëàâäîïûùüôöç', 'eeeeaaaiiuuuooc');
     
    	return $strChaine;
    }
    Le problème y est toujours ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 147
    Points : 120
    Points
    120
    Par défaut
    Toujours le même problème...

  6. #6
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    Tu devrais faire un echo de $strChaine après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $strChaine = html_entity_decode($strChaine, ENT_QUOTES, 'UTF-8');
    car tu dois avoir un problème lors du décodage (voir même avant).

Discussions similaires

  1. string.replace et caractères spéciaux
    Par fitiwizz dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/03/2009, 11h03
  2. Réponses: 12
    Dernier message: 06/02/2009, 13h23
  3. [PostgreSQL] Les caractères accentués ?
    Par yacomor dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/02/2003, 16h30
  4. insérer des caractères accentués INFORMIX/JDBC
    Par donde dans le forum Informix
    Réponses: 2
    Dernier message: 19/11/2002, 20h02

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