Der Dicki: Nachtrag: funktionierende Lösung

Beitrag lesen

Hallihallo!

Nachdem ich die eigentliche Problematik endlich mal kapiert habe (es darf nicht "doppelt" ersetzt werden), muss ich natürlich einen Rückruf starten.

Ein einfaches str_replace mit Arrays als Argumenten hilft hier nicht weiter, wie ich feststellen musste.

Um das Problem zu lösen, muß man also nur dafür sorgen, daß jedes Zeichen im gegebenen String nur höchstens ein Mal ersetzt wird.

Das kann man am Besten in einer einfachen Schleife realisieren:

  
 $string = "franz faehrt im komplett verwahrlosten taxi quer durch bayern";  
 $translation = array(  
  "a" => "b",  
  "b" => "c",  
  "c" => "d",  
  "d" => "e",  
  "e" => "f",  
  "f" => "g",  
  "g" => "h",  
  "h" => "i",  
  "i" => "j",  
  "j" => "k",  
  "t" => "u",  
  "u" => "v",  
  "v" => "w",  
  "w" => "x",  
  "x" => "y",  
  "y" => "z",  
  "z" => "a",  
  " " => " "  
  );  
  
 echo $string."<br>";  
 for ($i=0; $i<strlen($string); $i++) {  
  if ([link:http://de2.php.net/manual/de/function.array-key-exists.php@title=array_key_exists]([link:http://de2.php.net/manual/de/function.substr.php@title=$string{$i}],$translation)) {  
   $string{$i} = $translation[$string{$i}];  
  }  
 }  
 echo $string;  

Hier wird einfach am Anfang eine Ersetzungstabelle erstellt, und die Schleife läuft den String einmal von Anfang bis Ende durch.
Findet sie ein Zeichen, das übersetzt werden soll, tut sie das.

Ich hoffe, ich konnte Dir damit helfen...

Viele liebe Grüße,
Der Dicki