regex zum Worte ersetzen lassen

rernanded

Erfahrenes Mitglied
PHP:
 <?php
$str = $_POST['text'];
$Worte = array("eins", "zwei", "drei");
$Ersatzworte = array("häh", "höh", "hüh");
$newstr = str_replace($Worte, $Ersatzworte, $str);
echo "$str ($newstr)<br />"; 
?>
Mein Script funktioniert gut bei einzelnen Worten hat aber einen Haken: aus "einser" wird "häher". Daher denke ich aus dem str_replace muß ein preg_replace werden und bei den pattern die regex eingebaut werden, und zwar so, daß aus dem Wort "einser" nicht "häher" wird und außerdem will ich auch Ausdrücke aus mehreren Worten ersetzen können zB "alle Achtung" in "sieh mal an".

MONI
 
Ich würde es mit dem Pattern lösen
Code:
/(?<![[:word:]])(MeinSuchwert)(?![[:word:]])/
Nimm den Suchstring sofern davor und dahinter kein Wort-Zeichen ist. 'kein Wort-Zeichen' kann Textanfang, Satzzeichen, Leerzeichen etc sein.
 
Zurück