====== Suppressions des accents avec PHP ======
Il existe un tas de raison pour supprimer les accents d'une chaîne de caractères, par exemple, préparer une chaîne de caractères pour l'insertion dans une URL.
Voici deux //scripts PHP// pour supprimer les caractères accentuées d'une chaîne.
===== Code PHP pour charset ISO =====
Le code est très simple et est basé sur la commande strstr
$chaine_avec_accent = 'Bonjour, vous êtes étonnamment brillant';
$chaine_convertit= strtr($chaine_avec_accent,
'ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ',
'aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn');
Ce code fonctionne très bien avec les charsets en 8 bits comme le charset iso-8859-1 ou iso-8859-15 mais pas pour les charsets codé sur plusieurs octets comme UTF-8. Dans le cas de l'UTF-8, il affiche deux caractères quelconque à la place du caractère accentué.
===== Voici un code PHP pour tous les charsets =====
Voici un code PHP plus complexe qui enlève les caractères sans problème d'affichage et quelque soit le charset utilisé.
function enleve_accent($chaine=''){
$accent = array('%C3%80'=>'A','%C3%81'=>'A','%C3%82'=>'A','%C3%83'=>'A','%C3%84'=>'A','%C3%85'=>'A','%C3%A0'=>'a','%C3%A1'=>'a','%C3%A2'=>'a','%C3%A3'=>'a','%C3%A4'=>'a','%C3%A5'=>'a','%C3%92'=>'O','%C3%93'=>'O','%C3%94'=>'O','%C3%95'=>'O','%C3%96'=>'O','%C3%98'=>'O','%C3%B2'=>'o','%C3%B3'=>'o','%C3%B4'=>'o','%C3%B5'=>'o','%C3%B6'=>'o','%C3%B8'=>'o','%C3%88'=>'E','%C3%89'=>'E','%C3%8A'=>'E','%C3%8B'=>'E','%C3%A8'=>'e','%C3%A9'=>'e','%C3%AA'=>'e','%C3%AB'=>'e','%C3%87'=>'C','%C3%A7'=>'c','%C3%8C'=>'I','%C3%8D'=>'I','%C3%8E'=>'I','%C3%8F'=>'I','%C3%AC'=>'i','%C3%AD'=>'i','%C3%AE'=>'i','%C3%AF'=>'i','%C3%99'=>'U','%C3%9A'=>'U','%C3%9B'=>'U','%C3%9C'=>'U','%C3%B9'=>'u','%C3%BA'=>'u','%C3%BB'=>'u','%C3%BC'=>'u','%C3%BF'=>'y','%C3%91'=>'N','%C3%B1'=>'n');
$chaine = urlencode($chaine);
foreach ($accent as $key => $value) {
$chaine = str_replace($key,$value,$chaine);
}
return urldecode($chaine);
}
Dans la fonction PHP ci-dessus, vous trouverez dans le tableau //accent// la liste des caractères accentués et leur valeur de remplacement.
Nous convertissons la chaîne d'entrée grâce à la commande **urlencode**, qui permet la conversion des caractères accentuées dans un code compatible avec les URLs.
Nous parcourons le tableau //accent// grâce à une boucle **foreach** puis nous remplaçons les caractères accentués par leurs équivalents sans accent. Puis nous décodons la chaîne d'entrée grâce à la commande **urldecode**.
===== Conclusion =====
Les deux codes ci-dessus sont équivalent dans le résultat. Néanmoins le second code consomme légèrement plus de ressources machines. Si votre site est en //iso-8859-1// ou en //iso-8859-15// privilégié le premier code. Si votre site gère plusieurs langues ou tout simplement vous voulez assurer à votre site une certaine portabilité (appareils nomades, ...) choisissez le second code.
Merci de votre lecture.
===== Notes de version =====
* [27/12/2015] : Article initial
* [17/11/2017] : Harmonsiation de la page
===== Auteurs et sources =====
* Auteur : [[:user:montuy337513]]
===== Navigation =====
* [[:accueil|Accueil]]
* [[:gestion-site-internet]]
* [[:tutoriel-javascript]]
* [[:tutoriel-html]]
* [[:tutoriel-php-mysql]]
* [[:tutoriel-referencement-seo]]