PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schon wieder eine Regex-Frage von mir



Beatkiller
20-07-2005, 20:58
Hallöle, nachdem es hier einige sehr gute Coder gibt, ist dies wiederum eine Anlauf-Stelle für mich.

Ich habe wieder ein ähnliches Problem. Diesmal möchte ich mit etwas bb-Code arbeiten:


$alter_text = "Ein Bild http://bla.de/blub.jpg mittem im Text";

Gut, ich habe eine Regex, mit dem ich das aus Texten extrahieren kann:


$pattern = "=\[img\](.*)\[/img\]=";

Nun habe ich also, nachdem ich es durch preg_match() gejagt habe, in meinem Treffer-Array 2 Elemente. In $treffer[0] steht meine Kette mit dem BB-Code und die URL des Bildes in $treffer[1].

Mein Problem ist nun, dass der BBCode nicht durch eine abgewandelte Zeichenkette ausgetauscht wird. Beispiel:


$suchmuster = $treffer[0];
$ersetzung = "<img src=\"" . $treffer[1] . "\" alt=\"blub\" />";
$neuer_text = preg_replace($suchmuster, $ersetzung, $alter_text);


Anscheinend wird $suchmuster nicht gefunden. Denn der neue Text ist genauso wie der alte Text.

Wo liegt mein Fehler, ich such schon ein Weilchen. Danke für Tipps

der nervende
Beat

unbekannt2
20-07-2005, 21:06
Nun habe ich also, nachdem ich es durch preg_match() gejagt habe, in meinem Treffer-Array 2 Elemente. In $treffer[0] steht meine Kette mit dem BB-Code und die URL des Bildes in $treffer[1].Dann poste mal den Code dazu.

Wieso machst du das nicht einfach so?

$text = preg_replace("/\[img\](.*)\[\/img\]/isU", "<img src=\"\\1\" alt=\"blub\" />", $text);

Beatkiller
20-07-2005, 21:17
Weil ich nicht wusste, dass es auch so funktioniert. Ich hab nun wieder was dazu gelernt. Danke.

BTW: Ich hab auch den Fehler entdeckt, den ich gemacht habe:


$pattern = "=\(.*)\[/img\]=";

Da fehlt ein Backslash vor dem Slash in ;)