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:&Ccedil;&eacute;&ccedil;&eacute; 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;        
}