Le code. str_replace ne pose pas de problème en utf-8 alors que strtr oui
<?php
$search = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'à', 'á', 'â', 'ã', 'ä', 'å', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ò', 'ó', 'ô', 'õ', 'ö', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ');
$replace = array('A', 'A', 'A', 'A', 'A', 'A', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', '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', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y');
$MaChaine = str_replace($search, $replace, $MaChaine);
?>
Lien vers le fichier : cliquez ici
On peut très bien en faire une fonction :
<!DOCTYPE html>
<HTML>
<?php
$varMachaine = "Et voici une suite de caractères avec accents : ÀÁÂÃÄÅ Ç ÈÉÊË ÌÍÎÏ ÒÓÔÕÖ ÙÚÛÜ Ý àáâãäå ç èéêë ìíîï ðòóôõö ùúûü ýÿ";
echo "Ma chaîne sans modification : ".$varMachaine."<br />\n";
echo "Ma chaîne avec modification : ".fctRetirerAccents($varMachaine)."<br />\n";
function fctRetirerAccents($varMaChaine)
{
$search = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'à', 'á', 'â', 'ã', 'ä', 'å', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ò', 'ó', 'ô', 'õ', 'ö', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ');
//Préférez str_replace à strtr car strtr travaille directement sur les octets, ce qui pose problème en UTF-8
$replace = array('A', 'A', 'A', 'A', 'A', 'A', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', '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', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y');
$varMaChaine = str_replace($search, $replace, $varMaChaine);
return $varMaChaine; //On retourne le résultat
}
?>
</HTML>
Lien vers le fichier : cliquez ici
Voici ce que la page va afficher :
Ma chaîne sans modification : Et voici une suite de caractères avec accents : ÀÁÂÃÄÅ Ç ÈÉÊË ÌÍÎÏ ÒÓÔÕÖ ÙÚÛÜ Ý àáâãäå ç èéêë ìíîï ðòóôõö ùúûü ýÿ
Ma chaîne avec modification : Et voici une suite de caracteres avec accents : AAAAAA C EEEE IIII OOOOO UUUU Y aaaaaa c eeee iiii oooooo uuuu yy
J'ai vu une version simplifiée mais elle ne fonctionne pas en l'état. Les caractères ne sont pas remplacés :
$UneValeur = str_replace('ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy', $UneValeur);
Lien vers le fichier : cliquez ici
Sur ce site j'ai vu une solution que je trouve moins élégante
http://www.weirdog.com/blog/php/supprimer-les-accents-des-caracteres-accentues.html
$MaVariable = htmlentities($MaVariable, ENT_NOQUOTES, 'utf-8');
$MaVariable = preg_replace('#&([A-za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $MaVariable);
$MaVariable = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $MaVariable); // pour les ligatures e.g. 'œ'
$MaVariable = preg_replace('#&[^;]+;#', '', $MaVariable); // supprime les autres caractères
Lien vers le fichier : cliquez ici
Pages Web
Site Web | Description |
---|---|
developpez.net | Forum où l'on indique qu'il faut remplacer strtr par str_replace |
Article(s) suivant(s)
Article(s) précédent(s)
Article(s) en relation(s)