eregi_replace String Problem

D-LuX

Erfahrenes Mitglied
Ich habe folgendes Problem:

Möchte Wörter aus der DB suchen und ersetzen lassen.
Habe ich auch erfolgreich geschafft mit:


PHP:
<?php
$text = "Dies ist ein kleines Beispiel";
$text = eregi_replace("ist", "war", $text);
echo $text;
?>


Ist es auch möglich die Wörter zu unterscheiden, falls in einem Wort, zB. "Atheist" ..dort versteckt sich auch ein "ist" soll aber hier nicht angesprochen werden.

Danke schonmal im voraus!
 
verwende statt eregi() preg_replace()
Dort steht dir das Suchmuster \b zur Verfügung, welches eine Wortgrenze signalisiert.

PHP:
<?php
$text = "Dies ist ein kleines Beispiel";
$text = preg_replace("/\bist\b/i", "war", $text);
echo $text;
?>
 
Hey, super

Klappt, dankeschön!
Lösung ist genial und sooo elegant... Nicht nur ist das case-sensitivity-Problem gelöst, auch ist der code gewaltig eingedampft.

Jetzt noch die Verständnisfrage:

PHP:
"/\bist\b/i"

Was passiert bei \b genau?
 
Zuletzt bearbeitet:
\b....wie erwähnt zum Finden der Wortgrenze.

Wortgrenze meint folgendes:
Code:
\bist\b
das \b prüft, ob das i bzw. das t ein Zeichen vom Typ \w ist. Wenn ja, wird daraus geschlossen, dass wenn an Stelle des \b ein Zeichen steht, welches nicht vom Typ \w ist, eine Wortgrenze vorhanden ist.

In dem Fall ist bspw.
Code:
\bist\b
gleichbedeutend mit
Code:
\Wist\W
,
der Unterschied ist allerdings, das \b das entsprechende Zeichen nur sucht und nicht mit einschliesst, denn bei dem Ausdruck
Code:
\Wist\W
würdest du ja auch die Leerzeichen vor/hinter dem "ist" ersetzen.
 
Super, dankeschön!

Wäre das bei dem Suchwort "und" dasselbe?
Darf ja auch nicht in dem Wort Freunde erkannt und ersetzt werden.
 
Perfekt, danke für die Hilfe!
Hab jetzt endlich was zur Wortgrenze gefunden, gelesen und gerallt ;)

Bon WeeKenD ;-)
 
Zurück