J'ai créé une fonction de nettoyage en PHP pour un projet permettant de construire des URL utiles à partir du contenu de la base de données. Il supprime tous les espaces et les caractères spéciaux, de sorte qu'une phrase comme "Mes albums Motörhead" devient dans l'URL my-motoerhead-albums. Cependant, il semble ne pas convertir correctement les trémas comme ö, ä, ü, etc, et je ne peux pas comprendre pourquoi.La fonction de nettoyage de PHP ne fonctionne pas correctement
Voici le code:
function clean($text) {
$text = trim($text);
$text = strtolower($text);
$code_entities_match = array(
' ', '--', '"', '!', '@', '#', '$', '%', '^', '&',
'*', '(', ')', '_', '+', '{', '}', '|', ':', '"',
'<', '>', '?', '[', ']', '\\', ';', "'", ',', '.',
'/', '*', '+', '~', '`', '=', '¡', '¿', '´', '%C2%B4',
'ä', 'ö', 'ü', 'ß', 'å', 'á', 'à',
'ó', 'ò', 'ú', 'ù', 'í', 'é', 'è', 'ø', 'Þ', 'ð', '%C3%9E', 'þ'
);
$code_entities_replace = array(
'', '-', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'ae', 'oe', 'ue', 'ss', 'aa', 'a', 'a', 'o', 'o', 'u', 'u', 'i', 'e', 'e', 'oe', 'th', 'th', 'th', 'th'
);
$text = str_replace($code_entities_match, $code_entities_replace, $text);
return $text;
}
"Ne fonctionne pas" n'est pas une description correcte du problème. S'il vous plaît dites-nous ce qu'il fait ou ne fait pas exactement. –
En outre, vous pouvez trouver de meilleures approches au problème ici: http://stackoverflow.com/questions/465990/how-to-handle-diacritics-accents-when-rewriting-pretty-urls –