Lothindil a écrit :
Bah il suffit d'ajouter la conversion des accents à ton moteur php ^^
cadeau :
function stripAccents($string){
return strtr($string,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ',
'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
}
Je disais que je n'aurais sûrement pas dû faire un moteur PHP comme ça par rapport à l'utilisation de l'anglais
Sinon, ta fonction ne semble pas marcher pour les encodages nécessitant plus de 8 bits, merci quand même !
J'en ai trouvé une qui est plus puissante et plus "belle" (et qui peut bosser sur plus de 8 bits). Je te la donne ci-dessous.
/**
* Supprimer les accents
*
* @param string $str chaîne de caractères avec caractères accentués
* @param string $encoding encodage du texte (exemple : utf-8, ISO-8859-1 ...)
*/
function suppr_accents($str, $encoding='utf-8')
{
// transformer les caractères accentués en entités HTML
$str = htmlentities($str, ENT_NOQUOTES, $encoding);
// remplacer les entités HTML pour avoir juste le premier caractères non accentués
// Exemple : "&ecute;" => "e", "&Ecute;" => "E", "Ã " => "a" ...
$str = preg_replace('#&([A-za-z])(?:acute|grave|cedil|circ|orn|ring|slash|th|tilde|uml);#', '\1', $str);
// Remplacer les ligatures tel que : Œ, Æ ...
// Exemple "Å“" => "oe"
$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str);
// Supprimer tout le reste
$str = preg_replace('#&[^;]+;#', '', $str);
return $str;
}
Je sais, c'est mal de c/c, mais bon. Je ne fais que réutiliser ce qui a déjà été codé. Et puis elle m'a l'air bien compliqué à coder, cette fonction...
Merci pour ces quelques précisions QuentinC
Modifié par Nohak_ (01 Mar 2014 - 09:17)