io credostrtr
is multi-byte safe, in entrambi i casi in quanto str_replace
è multi-byte di sicuro si potrebbe avvolgere:
function mb_strtr($str, $from, $to)
{
return str_replace(mb_str_split($from), mb_str_split($to), $str);
}
Dato che non esiste la funzione mb_str_split
, è necessario scrivere anche la propria (utilizzando mb_substr
e mb_strlen
), oppure si potrebbe utilizzare l'implementazione PHP UTF-8 (leggermente modificato):
function mb_str_split($str) {
return preg_split('~~u', $str, null, PREG_SPLIT_NO_EMPTY);;
}
Tuttavia, se siete alla ricerca di una funzione per rimuovere tutti (accentuazioni latino) da una stringa si potrebbe trovare il seguente? funzione 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
fonte
2010-05-03 15:33:50
Potrebbe forse fornire un esempio di ciò che si sta cercando di fare esattamente (esempio di codice?)? Sarebbe più semplice suggerire un'alternativa per un determinato caso d'uso. – Max
Non ho un esatto esempio, ma vale sempre la pena dare un'occhiata ai commenti degli utenti sulla pagina di documentazione del php: http://us3.php.net/strtr sembra che ci siano persone che hanno già avuto lo stesso problema . Forse uno di loro ha postato la soluzione già lì. – Max
Sì, Max, hai ragione. Stavo cercando una soluzione ma non ho trovato nulla. – Martin