fbpx
Accueil Informatique Pour les développeurs 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).

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

David Jovanovic
Fondateur de Lecoindunet et rédacteur à mes heures perdues, ma passion pour l'informatique et mes expériences professionnelles m'ont permis d'acquérir de solides connaissances dans les domaines liés aux nouvelles technologies. En démarrant ma carrière comme technicien, puis en devenant développeur et maintenant chef de projet informatique, je fais de ma polyvalence ma force et m'aspire à partager mes connaissances le web.

11 Commentaires

  1. 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

  2. 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.

  3. C’est attrose cette fonction, je voie pas pourquoi vous faites comme ça ! 
    Par ailleurs sur Github, j’ai déja vu plein de personne utilisant cette méthode pour preuve voici, un commit d’une class sur lequel j’ai moi même fait des modifications 
    https://github.com/steel-finger/wunderground/commit/4a3384555b41e3813770b2622dfb3c4fb7ab28c3
    ###
    function stripAccent($str){ $string = str_replace(‘ ‘, ‘-‘, $str);  return preg_replace(‘/[^A-Za-z0-9-]/’,  », $string);}
    ###

  4. Cette fonction est atroce, car les débutants n’apprenne pas comment utilisé les bonnes fonctions native au php, en modifient de peut ma fonction on peut très bien retourné la même chose.

    Voici la version pour remplacé les caractères et non les supprimés 

    function stripAccent($str)
        {
            setlocale(LC_ALL, ‘fr_FR’);

            $str = iconv(‘UTF-8’, ‘ASCII//TRANSLIT//IGNORE’, $str);
            $str = preg_replace(‘#[^0-9a-z]+#i’, ‘-‘, $str);

            $str = trim($str, ‘-‘);

            return $str;
        }

     

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici

Derniers articles

Récupérer gratuitement le code d’un autoradio Renault

Une panne de batterie et vous voilà sans autoradio ? Découvrez comment récupérer gratuitement le code de votre autoradio Renault en quelques minutes seulement.

Remplacer PowerShell / invite de commande dans le menu démarrer

Dans cet article, nous vous expliquons comment remplacer PowerShell par l'invite de commande (ou vice versa) dans le menu Démarrer Windows+X

4 solutions à une pièce jointe Winmail.dat

Vous ou votre correspondant avez reçu un fichier winmail.dat en tant que pièce jointe. Voici 4 solutions pour dire non aux fichiers winmail.dat

Connecter un lecteur réseau sur Mac

Découvrez comment connecter un lecteur réseau sur Mac pour accéder à un partage de fichier d'un ordinateur, d'un serveur ou d'un NAS.

Derniers commentaires

Restons connectés

1,760FansJ'aime
21SuiveursSuivre
458SuiveursSuivre

Comment activer le bureau à distance sur Windows ?

Découvrez comment activer le bureau à distance à partir de Windows, depuis une GPO et quelles règles pare-feu appliquer.

📌 Épinglés

5 conseils pour bien nettoyer un écran OLED, LED ou LCD

Un mauvais nettoyage peut abimer votre écran ! Découvrez nos 5 conseils pour bien nettoyer l'écran de votre téléviseur LED, OLED ou LCD.

Ajouter de la RAM à un PC Portable

Votre PC portable montre quelques signes de ralentissements ou vous souhaitez augmenter ses performances. Vous pouvez alors ajouter de la RAM à votre PC...

Que faire s’il manque des prises HDMI sur votre TV ?

Nous vous présentons la solution pour palier au manque de prises HDMI sur votre téléviseur si vous avez trop de consoles, appareils multimédia à brancher.

Les techniques pour cloner un disque dur vers un SSD

Vous envisagez d'installer un SSD dans votre ordinateur ? Dans ce tutoriel, nous vous expliquons les techniques pour cloner votre ancien disque dur vers un SSD plus performant.

16 choses cools que peut faire Alexa

Les enceintes connectées Amazon Echo offrent de nombreuses fonctionnalités. Découvrez 16 choses que vous pouvez faire avec Alexa.

6 solutions pour regarder la TNT sur votre TV sans prise d’antenne

Voici 6 solutions pour regarder les chaînes TNT sur votre TV dans une pièce sans prise d'antenne.

11 accessoires pour votre Nintendo Switch

Vous possédez la Nintendo Switch ? Découvrez notre sélection d'accessoires pour en profiter pleinement.

Comment vérifier la température d’un CPU sur PC ?

Une des pièces maîtresse de nos PC est le CPU. Mais savez-vous contrôler sa température et sa vitesse de fonctionnement ? Nous allons voir dans cet article comme vérifier la température du processeur de votre PC

10 logiciels de messagerie gratuits pour Windows

Si vous recherchez une application de messagerie gratuite sous Windows ou désirez remplacer Microsoft Outlook par une alternative, ça tombe bien, nous vous présentons le top 10 des meilleurs logiciels de messagerie sous Windows.

10 choses à savoir sur les prises parafoudres et parasurtenseurs

Les protections contre les surtensions sont une manière peu coûteuse de protéger vos équipements contre les dommages causés par la foudre ou les aléas du réseau électrique. Dans cet article, on vous dit tout sur les prises ou multiprises parafoudres et parasurtenseurs.
0 Partages
Tweetez
Partagez
Partagez