Jonny 5: preg_replace() Funktion

Beitrag lesen

Hi!

Hi,
folgender PHP Code:
$beschreibung = preg_replace("[b][/b]","<b></b>",$beschreibung);
bringt folgenden Fehler:

Warning: preg_replace() [function.preg-replace]: Unknown modifier '[' in ...

Meine Vermutung, ich muss die "[" igendwie mit "" oder "/" ... ja wie nennt man das eigentlich?

Die eckige Klammer irgendwie mit Backslash escapen weil sie innerhalb des Suchmusters ein Metazeichen/Funktionszeichen darstellt.

Meine Vermutung, du hast keine Begrenzer (delimiter) für deinen regulären Ausdruck verwendet.

Man verwendet diese, um das Suchmuster von möglichen Modifiern abzutrennen. Such dir welche aus. ZB / oder ~

Man möchte also alle [b] und [/b] ersetzen durch <b> und </b>

  
$beschreibung = preg_replace('~\[(/)?b\]~i','<b\1>',$beschreibung);  

Da die eckigen Klammern eben Metazeichen bzw Funktionszeichen innerhalb des regulären Ausdrucks sind, müssen diese durch einen Backslash escaped werden.

Wir suchen also eine öffnende eckige Klammer.
Gefolgt von einem oder keinem Slash - Quantifier ? bedeutet 0 oder 1.
Gefolgt von einem kleinen b.
Gefolgt von einer schließenden eckigen Klammer.
Der Slash wird innerhalb runder Klammern rückreferenziert und dann in die Ersetzung eingefügt.
Ein möglicher Modifier wär hier zB das i nach dem Begrenzer für case insensitive (groß/klein egal)

Index der Klammerungen: 0 = gesamter Ausruck, 1 = Inhalt des ersten runden Klammerpaars usw.

Am besten mal einlesen, wenn man es öfter benötigt, Finde gut zB:
www.regular-expressions.info

Viel Erfolg,
Jonny 5