I creostrtr
is multi-byte safe, de cualquier manera, ya str_replace
es múltiples bytes se podría envolverlo:
function mb_strtr($str, $from, $to)
{
return str_replace(mb_str_split($from), mb_str_split($to), $str);
}
Como no existe la función mb_str_split
, también necesita escribir la suya (usando mb_substr
y mb_strlen
), o usted podría utilizar la aplicación PHP UTF-8 (cambiado ligeramente):
function mb_str_split($str) {
return preg_split('~~u', $str, null, PREG_SPLIT_NO_EMPTY);;
}
Sin embargo, si lo que buscas es una función para eliminar todas las acentuaciones (latino) de una cadena que puede encontrar el siguiente? función útil:
function Unaccent($string)
{
return preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml|caron);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8'));
}
echo Unaccent('ľľščťžýáíŕďňä'); // llsctzyairdna
echo Unaccent('Iñtërnâtiônàlizætiøn'); // Internationalizaetion
Podría tal vez dar un ejemplo de lo que está intentando hacer exactamente (ejemplo de código?)? Sería más fácil sugerir una alternativa para un cierto caso de uso. – Max
No tengo un ejemplo exacto a mano, pero siempre vale la pena echar un vistazo a los comentarios de los usuarios en la página de documentación de phps: http://us3.php.net/strtr parece que hay personas que ya tenían el mismo problema . Tal vez uno de ellos publicó la solución que ya estaba allí. – Max
Sí, Max, tienes razón. Estaba buscando una solución allí, pero no encontré nada. – Martin