>> Accueil > Le coin informa... > Développement > Zone PHP > Scripts utiles > Remplacer les caractères accentués d'une chaine en PHP

Remplacer les caractères accentués d'une chaine en PHP

En PHP, il est parfois nécessaire de supprimer/remplacer les accents d'un texte ou d'une chaine de caractères par un caractère non accentués (pour générer une url à partir d'un titre par exemple).

Ce script PHP recherche les caractères accentués dans un texte et les remplace par leurs équivalents sans accent. Il est simple et fonctionne pour pas mal de langues, peu importe l'encodage (UTF-8 ou autre).

Code PHP :
Ne pas oublier les balises <?php ... ?>
<?php
function remove_accent($str)
{
  $a = array('À''Á''Â''Ã''Ä''Å''Æ''Ç''È''É''Ê''Ë''Ì''Í''Î''Ï''Ð',
                'Ñ''Ò''Ó''Ô''Õ''Ö''Ø''Ù''Ú''Û''Ü''Ý''ß''à''á''â''ã',
                'ä''å''æ''ç''è''é''ê''ë''ì''í''î''ï''ñ''ò''ó''ô''õ',
                'ö''ø''ù''ú''û''ü''ý''ÿ''Ā''ā''Ă''ă''Ą''ą''Ć''ć''Ĉ',
                'ĉ''Ċ''ċ''Č''č''Ď''ď''Đ''đ''Ē''ē''Ĕ''ĕ''Ė''ė''Ę''ę',
                'Ě''ě''Ĝ''ĝ''Ğ''ğ''Ġ''ġ''Ģ''ģ''Ĥ''ĥ''Ħ''ħ''Ĩ''ĩ''Ī''ī',
                'Ĭ''ĭ''Į''į''İ''ı''IJ''ij''Ĵ''ĵ''Ķ''ķ''Ĺ''ĺ''Ļ''ļ''Ľ''ľ',
                'Ŀ''ŀ''Ł''ł''Ń''ń''Ņ''ņ''Ň''ň''ʼn''Ō''ō''Ŏ''ŏ''Ő''ő''Œ',
                'œ''Ŕ''ŕ''Ŗ''ŗ''Ř''ř''Ś''ś''Ŝ''ŝ''Ş''ş''Š''š''Ţ''ţ''Ť'
                'ť''Ŧ''ŧ''Ũ''ũ''Ū''ū''Ŭ''ŭ''Ů''ů''Ű''ű''Ų''ų''Ŵ''ŵ''Ŷ'
                'ŷ''Ÿ''Ź''ź''Ż''ż''Ž''ž''ſ''ƒ''Ơ''ơ''Ư''ư''Ǎ''ǎ''Ǐ''ǐ',
                'Ǒ''ǒ''Ǔ''ǔ''Ǖ''ǖ''Ǘ''ǘ''Ǚ''ǚ''Ǜ''ǜ''Ǻ''ǻ''Ǽ''ǽ''Ǿ''ǿ');

  $b = array('A''A''A''A''A''A''AE''C''E''E''E''E''I''I''I''I''D''N''O',
                'O''O''O''O''O''U''U''U''U''Y''s''a''a''a''a''a''a''ae''c',
                'e''e''e''e''i''i''i''i''n''o''o''o''o''o''o''u''u''u''u',
                'y''y''A''a''A''a''A''a''C''c''C''c''C''c''C''c''D''d''D',
                'd''E''e''E''e''E''e''E''e''E''e''G''g''G''g''G''g''G''g',
                'H''h''H''h''I''i''I''i''I''i''I''i''I''i''IJ''ij''J''j''K',
                'k''L''l''L''l''L''l''L''l''L''l''N''n''N''n''N''n''n''O''o',
                'O''o''O''o''OE''oe''R''r''R''r''R''r''S''s''S''s''S''s''S',
                's''T''t''T''t''T''t''U''u''U''u''U''u''U''u''U''u''U''u''W',
                'w''Y''y''Y''Z''z''Z''z''Z''z''s''f''O''o''U''u''A''a''I''i',
                'O''o''U''u''U''u''U''u''U''u''U''u''A''a''AE''ae''O''o');
  return str_replace($a$b$str);

?>


php.net User Contributed Notes : http://www.php.net/manual/en/function.preg-replace.php#96586
Modifié par Vitch le 17-02-2011
Tags : supprimer, remplacer, accents, Php


<< Sauvegarder une base de données MySQL avec mysqldump et PHPSlug PHP : Convertir un titre d'article en une URL >>

Haut de page

Poster un commentaire


1/6 sur 6 commentaires

Benske
(Non membre)

Le 09 février 2011 à 10h28


> Merci pour cette fonction que j'avais besoin!Mais elle remplace les accents en "?" chez moi:criminel�l�ves-de-premi�re
> quel peut être la raison ?
merci


Vitch
Déconnecté
234 message(s)
Le 09 février 2011 à 13h52
benske (Non membre) à écrit le 09 février 2011 à 10h28 :
Merci pour cette fonction que j'avais besoin!Mais elle remplace les accents en "?" chez moi:criminel�l�ves-de-premi�re
> quel peut être la raison ?
merci


> C'est certainement lié à un pb d'encodage. Sais-tu quel encodage tu utilises ?


Benske
(Non membre)

Le 09 février 2011 à 19h14


> Ok, je m'excuse. J'avais oublié "<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>" sur la page ou le script est exécuté. 

Je vous remerci pour votre aide, ce code m'est d'un grand service.


Vitch
Déconnecté
234 message(s)
Le 09 février 2011 à 22h19
benske (Non membre) à écrit le 09 février 2011 à 19h14 :
Ok, je m'excuse. J'avais oublié "<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>" sur la page ou le script est exécuté. 

Je vous remerci pour votre aide, ce code m'est d'un grand service.


> Ca arrive de faire des oublis, :-) l'essentiel c'est que tu ai trouvé la solution !


Fleg
(Non membre)

Le 17 février 2011 à 17h22


> Petite erreur 8ieme ligne et avant dernier caractere de $b. C'est un "L" et pas un "l"





Vitch
Déconnecté
234 message(s)
Le 17 février 2011 à 22h21
fleg (Non membre) à écrit le 17 février 2011 à 17h22 :
Petite erreur 8ieme ligne et avant dernier caractere de $b. C'est un "L" et pas un "l"


> Effectivement, il y avait une petite erreur pour la lettre de remplacement du "Ł" (l au lieu de L). C'est corrigé, merci !


S'abonner - Se désabonner
   

Ajouter un commentaire :

Les liens sont automatiquement formatés.
Si vous avez une question, essayez de communiquer un maximum d'informations !
N'hésitez pas à partager vos avis ou remarques :)

Pseudo :
 
 

 

Recopiez le code ci-contre :







Haut de page
Lecoindunet.com
Accueil - Mentions Légales - Contact - S'inscrire - Plan du site -