PHP supprimer remplacer les accents et caractères spéciaux
Par PlaceOweb le vendredi, février 8 2008, 04:58 - PHP - Lien permanent
Comment remplacer ou supprimer les caractères accentués "é,à,ù,..." en "e,a,u,..." ?
Solution sur le web
Comment supprimer les accents dans une chaîne de caractères ?
// fonction personnalisée suivante qui se base sur les expressions régulières pour remplacer les caractères accentués une fois convertis en entités HTML function remove_accents($str, $charset='utf-8') { // UTF-8, ISO-8859-1, ISO-8859-15 $str = htmlentities($str, ENT_NOQUOTES, $charset); $str = preg_replace('#\&([A-za-z])(?:acute|cedil|circ|grave|ring|tilde|uml)\;#', '\1', $str); $str = preg_replace('#\&([A-za-z]{2})(?:lig)\;#', '\1', $str); // pour les ligatures e.g. 'œ' $str = preg_replace('#\&[^;]+\;#', '', $str); // supprime les autres caractères return $str; }
Par exemple :
$var = "Çéçé est l'abrev. de cédric @déjà! Et le signe de l'euro est €."; echo "L1:".$var."\n"; echo "L2:".remove_accents($var)."\n"; echo "L3:".remove_accents($var,'ISO-8859-15')."\n";
Retournera :
L1:Çéçé est l'abrev. de cédric @déja! Et le signe de l'euro est €.<br> L2:<br> L3:Ccedil;eacute;ccedil;eacute; est l'abrev. de cedric @deja! Et le signe de l'euro est €.<br>
Supprimer les accents des caractères accentués
Propose 3 solutions, de la plus nulle à la meilleure...
PHP Supprimer les accents et les caractères spéciaux
/** * Transforme une chaîne de caractères en alphanumérique * * @param string $text * @param string $from_enc * @return unknown */ function to7bit($text,$from_enc) { $text = mb_convert_encoding($text,'HTML-ENTITIES',$from_enc); //On vire les accents $text = preg_replace( array('/ß/','/&(..)lig;/', '/&([aouAOU])uml;/','/&(.)[^;]*;/'), array('ss',"$1","$1".'e',"$1"), $text); //on vire tout ce qui n'est pas alphanumérique $out_text = eregi_replace("[^a-z0-9]",'',$text); //on renvoie la chaîne transformée return $out_text; }
Supprimer les accents avec PHP
function stripAccents($string){ return strtr($string,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ', 'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY'); }
Supprimer les accents
<?php function OterAccents($chaine) { return( strtr( $chaine, "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ", "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn" ) ); }
function NoAccentFeed($text, $EncIn = 'CP1252'){ return iconv($EncIn, 'ASCII//TRANSLIT//IGNORE', $text); }
Supprimer les accents d'une chaine en UTF8
function oteAccents($str) { $translit = array('Á'=>'A','À'=>'A','Â'=>'A','Ä'=>'A','Ã'=>'A','Å'=>'A','Ç'=>'C','É'=>'E','È'=>'E','Ê'=>'E','Ë'=>'E','Í'=>'I','Ï'=>'I','Î'=>'I','Ì'=>'I','Ñ'=>'N','Ó'=>'O','Ò'=>'O','Ô'=>'O','Ö'=>'O','Õ'=>'O','Ú'=>'U','Ù'=>'U','Û'=>'U','Ü'=>'U','Ý'=>'Y','á'=>'a','à'=>'a','â'=>'a','ä'=>'a','ã'=>'a','å'=>'a','ç'=>'c','é'=>'e','è'=>'e','ê'=>'e','ë'=>'e','í'=>'i','ì'=>'i','î'=>'i','ï'=>'i','ñ'=>'n','ó'=>'o','ò'=>'o','ô'=>'o','ö'=>'o','õ'=>'o','ú'=>'u','ù'=>'u','û'=>'u','ü'=>'u','ý'=>'y','ÿ'=>'y'); $str = strtr($str, $translit); return preg_replace('#[^a-zA-Z0-9\-\._]#', '_', $str); // Pour des noms de fichiers par exemple }
setlocale(LC_CTYPE, 'fr_FR.UTF-8'); // Traitement différent selon l'implémentation d'iconv (glibc ou libiconv) if(trim(ICONV_IMPL) == 'glibc') { $variable = iconv("UTF-8", "ISO-8859-15//TRANSLIT//IGNORE", $variable); } else { $variable = iconv("UTF-8", "ISO-8859-15//TRANSLIT", $variable); }
function supprimerAccent($cc) { $cc = str_replace( array( 'à', 'â', 'ä', 'á', 'ã', 'å', 'î', 'ï', 'ì', 'í', 'ô', 'ö', 'ò', 'ó', 'õ', 'ø', 'ù', 'û', 'ü', 'ú', 'é', 'è', 'ê', 'ë', 'ç', 'ÿ', 'ñ', 'ý', ), array( 'a', 'a', 'a', 'a', 'a', 'a', 'i', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'e', 'e', 'e', 'e', 'c', 'y', 'n', 'y', ), $cc ); $cc = str_replace( array( 'À', 'Â', 'Ä', 'Á', 'Ã', 'Å', 'Î', 'Ï', 'Ì', 'Í', 'Ô', 'Ö', 'Ò', 'Ó', 'Õ', 'Ø', 'Ù', 'Û', 'Ü', 'Ú', 'É', 'È', 'Ê', 'Ë', 'Ç', 'Ÿ', 'Ñ', 'Ý', ), array( 'A', 'A', 'A', 'A', 'A', 'A', 'I', 'I', 'I', 'I', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'E', 'E', 'E', 'E', 'C', 'Y', 'N', 'Y', ), $cc ); return $cc; }
Suppression d'accents en UTF-8
function supprime_accents($chaine) { $tofind = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ"; $replac = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn"; return(strtr($chaine,$tofind,$replac)); }
function minusculesSansAccents($texte) { $texte = mb_strtolower($texte, 'UTF-8'); $texte = str_replace( array( 'à', 'â', 'ä', 'á', 'ã', 'å', 'î', 'ï', 'ì', 'í', 'ô', 'ö', 'ò', 'ó', 'õ', 'ø', 'ù', 'û', 'ü', 'ú', 'é', 'è', 'ê', 'ë', 'ç', 'ÿ', 'ñ', ), array( 'a', 'a', 'a', 'a', 'a', 'a', 'i', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'e', 'e', 'e', 'e', 'c', 'y', 'n', ), $texte ); return $texte; }