2009-09-21 6 views

Odpowiedz

13
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); 
} 
+6

Należy wziąć pod uwagę, że drugi parametr może być tablicą do mapowania. – Gumbo

+0

Nie potrzebowałem tego, ale byłoby bardziej wierne podpisowi strtr. – joeforker

2
 
    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); 
    } 

jest nieznaczna edytowany funkcję joeforker do powrotna funkcji drugiego parametru z użyciem jako matrycy do replace_pairs.

+0

Działa świetnie. Przyjęta odpowiedź powinna zostać przeniesiona na tę. –

-1
$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); 
Powiązane problemy