preg_replace/Tags in Formular ersetzen

new bee

Grünschnabel
Hallo zusammen

Habe zum ersten mal mit preg_replace zu tun und verstehe Bahnhof :confused:.
Was ich machen will: Bei einem Formular zum Hinzufügen von Newsmitteilungen soll mittels {bildxxx} ein Bild in den Text eingefügt werden. Nun soll der Script {bildxxx} durch <img src="pfad zum bild" class="bild"> ersetzt werden, "pfad zum bild" soll aus einer Datenbank ausgelesen werden (xxx beschreibt also die ID eines Bildes).
Nun, was muss ich jetzt bei preg_replace schreiben, dass es das macht, was ich will? Beim Manual und allen Sachen, die ich bisher gefunden habe, verstehe ich die Syntax nicht, all die /{#{* verwirren mich, kann mir das jemand in verständlichen Worten erklären? Wäre sehr dankbar!
Gruss Jonas
 
Zuerst Bildpfade aus der DB holen und in einem Array speichern, könnte so aussehen
$bilder = array($bild_id => $bildname);

der regex würde dann inetwa so aussehen

$text = preg_replace("/{bild(\d+)}/","<img src=\".$bilder[\\1]."\">, $text);

nicht getetstet, aber sollte eigentlich folgendes tun

Zeichenkette {bild irgendwelche Zahlen} suchen und die gefundene Zahl dann als Array-Element des Bilderarrays auswählen. Also z.B.

{bild31} wird zu <img src=\".$bilder[31]\">

in dem Array sollte ja, wie oben beschrieben, der Bildpfad stehen.

Wie gesagt, nicht getestet, aber sollte vom prinzip her gehn ;)
 
Vielen Dank für die Hilfe. Leider gibts noch eine Fehlermeldung:
Parse error: parse error, unexpected T_CHARACTER, expecting T_STRING or T_VARIABLE or T_NUM_STRING
Ist da beim escapen irgendwo ein Fehler passiert?
 
Die Zeichen „{“ und „}“ sind bei regulären Ausdrücken Metazeichen und müssen daher maskiert werden:
PHP:
preg_replace('/\{bild(\d+)\}/e', '"<img src=\"".$bilder[\1]."\">"', $string);
 
Zurück