====== 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]]