Je croisstrtr
is multi-byte safe, de toute façon depuis str_replace
est sûr, vous pouvez envelopper multi-octets:
function mb_strtr($str, $from, $to)
{
return str_replace(mb_str_split($from), mb_str_split($to), $str);
}
Puisqu'il n'y a aucune fonction de mb_str_split
vous devez également écrire le vôtre (using mb_substr
et mb_strlen
), ou vous pouvez simplement utiliser la mise en œuvre PHP UTF-8 (légèrement modifié):
function mb_str_split($str) {
return preg_split('~~u', $str, null, PREG_SPLIT_NO_EMPTY);;
}
Toutefois, si vous êtes à la recherche d'une fonction pour supprimer tous les (accentuations latin) à partir d'une chaîne que vous trouverez peut-être ce qui suit? fonction utile:
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
Pouvez-vous fournir peut-être un exemple de ce que vous essayez de faire exactement (exemple de code?)? Il serait plus facile de suggérer une alternative pour un certain cas d'utilisation. – Max
Je n'ai pas un exemple exact à portée de main, mais ça vaut toujours la peine de jeter un oeil aux commentaires des utilisateurs sur la page de documentation de phps: http://us3.php.net/strtr il semble qu'il y ait des gens qui ont déjà eu le même problème . Peut-être que l'un d'eux a posté la solution déjà là. – Max
Oui, Max, tu as raison. Je cherchais une solution mais je n'ai rien trouvé. – Martin