globe: regexp: je nach ergebnis untersch. ersetzung

Beitrag lesen

n'abend,

die ersetzung der sonderzeichen ä,ö,ü mit ae, oe, ue

... erreichst du am Einfachsten so:

 $zeichen = array( 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß'  => 'ss');  
$string = "Hällö Wörld";  
$ohneUmlaute = strtr( $string, $zeichen );

mir geht es hier generell um ein prinzip, derartige ersetzungen mit regulären ausdrücken und backreferences zu lösen.

du suchst preg_replace() und die dazugehörige Dokumentation. Auf der selben Seite gibt es auch ein kleines Beispiel dazu. Für diesen Spaß ist der Modifikator e (evaluate) verantwortlich

preg_replace_callback() ist dann mal wieder eine php-typische "vereinfachung" des Obigen.

$string = "Hällö Wörld";  
function replaceUmlauts( $char ){  
  switch( $char[0] ) // gesamtes suchmuster  
  {  
    case 'ä': return 'ae'; break;  
    case 'Ä': return 'Ae'; break;  
    case 'ö': return 'oe'; break;  
    case 'Ö': return 'Oe'; break;  
    case 'ü': return 'ue'; break;  
    case 'Ü': return 'Ue'; break;  
    case 'ß': return 'ss'; break;  
  }  
}  
$ohneUmlaute = preg_replace_callback( '/[äöüß]/i', 'replaceUmlauts', $string );

(beispiele getippt, nicht ausgeführt)

weiterhin schönen abend...

--
Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|