2009-09-21 7 views

Antwort

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

Sie sollten bedenken, dass der zweite Parameter auch ein Array für das Mapping sein kann. – Gumbo

+0

Ich brauchte das nicht, aber es wäre trstrs Unterschrift treuer. – 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); 
    } 

I bearbeitet leicht die Funktion des joeforker replace_pairs für die Funktionalität der Verwendung als zweiten Parameter Array zurückzukehren.

+0

Es funktioniert super. Die angenommene Antwort sollte zu diesem verschoben werden. –

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