Как сделать strtr на UTF-8 в PHP?
Я ищу совместимый с UTF-8 strtr для PHP.
3 ответов
function strtr_utf8($str, $from, $to) {
$keys = array();
$values = array();
preg_match_all('/./u', $from, $keys);
preg_match_all('/./u', $to, $values);
$mapping = array_combine($keys[0], $values[0]);
return strtr($str, $mapping);
}
function strtr_utf8($str, $from, $to) { $keys = array(); $values = array(); if(!is_array($from)) { preg_match_all('/./u', $from, $keys); preg_match_all('/./u', $to, $values); $mapping = array_combine($keys[0], $values[0]); }else $mapping=$from; return strtr($str, $mapping); }
Я немного отредактировал функцию joeforker, чтобы вернуть функциональность использования второго параметра в качестве массива для replace_pairs.
$fromto = array(
'À'=>'A','Á'=>'A','Ã'=>'A','Â'=>'A',
'É'=>'E','Ê'=>'E',
'Í'=>'I',
'Ó'=>'O','Õ'=>'O','Ô'=>'O',
'Ú'=>'U','Ü'=>'U',
'Ç'=>'C',
'á'=>'a','à'=>'a','ã'=>'a','â'=>'a',
'é'=>'e',
'ê'=>'e',
'í'=>'i',
'ó'=>'o','õ'=>'o','ô'=>'o',
'ç'=>'c'
);
$filter = strtr($filter,$fromto);