Tengo el siguiente código de php.net:PHP: Problema con la conversión de caracteres strtr
$GLOBALS['normalizeChars'] = array(
'Š'=>'S', 'š'=>'s', 'Ð'=>'Dj','Ž'=>'Z', 'ž'=>'z', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A',
'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I',
'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U',
'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss','à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a',
'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i',
'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u',
'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y', 'ƒ'=>'f');
$string = strtr($string, $GLOBALS['normalizeChars']);
La cadena "AAO" debe sin duda dame "AAO", pero en lugar de eso conseguir "AAA". Esto se está volviendo realmente frustrante ya que luché con él durante horas, es decir, parece que no hay mucho que pueda estar mal.
He intentado setlocale (LC_CTYPE, 'en_US.utf8') y setlocale (LC_CTYPE, 'sv_SE.utf8') e incluso intenté eliminar el código y uso str_replace ('ö', 'o', $ cadena) también, pero nada está funcionando.
¿Qué puede estar mal?
El código que ha pegado me funciona. Pruébelo usted mismo con un script PHP con solo la tabla de normalización y la cadena de prueba. La configuración regional no afecta a 'strtr()'. – jmz
No fue una respuesta a tu pregunta, pero ¿has probado la clase 'Normalizer'? http://stackoverflow.com/questions/1890854/how-to-replace-special-characters-with-the-ones-theyre-based-on-in-php (no estoy seguro si puede hacer 'Ð' to' Dj 'embargo) –
Tu código funciona bien para mí también. – shamittomar