Je me trouve confronté à des problèmes de caractères accentués à 2 niveaux :
1 - retour SQL -> PHP5 -> AJAX -> alert JS
2 - tri alpha d'un array en PHP 5 : "énergumène" se retrouve après "zoulou"
J'ai donc essayé d'écrire une fonction PHP qui transforme les caractères accentués les plus courants en caractères non accentués en prenant des bouts de ci de là. Cette fonction doit "marcher" quel que soit la chaine passée : dans mon cas, ISO venant d'une base SQL, ou UTF-8 venant d'une variable PHP. Je sais que c'est le bazar mais je ne peux pas normaliser le format reçu.
Ca donne :
function sansAccent($chaine) {
// renvoit la chaine passee sans accent
$accents = '/&([A-Za-z]{1,2})(grave|acute|circ|cedil|uml|lig);/';
if (strlen(htmlentities($chaine,ENT_COMPAT,'UTF-8')) == 0) {
// $chaine en ISO-8859-1
return preg_replace($accents,'$1',htmlentities($chaine));
}else{
// $chaine en UTF-8
return preg_replace($accents,'$1',htmlentities($chaine,ENT_COMPAT,'UTF-8'));
}
}
J'ai l'impression que c'est du bricolage Vous en pensez quoi ? Quelqu'un connait une fonction plus propre ?
Merci d'avance.
en haut à gauche de ce sujet.