Reguläre Ausdrücke Ersetzungen Array
Schosch
- php
Guten Tag
Ich habe einen String:
$string = <td>{field_1}</td> '
.'<td>{field_2}</td> '
.'<td><a href="tender_detail.php?id={field_3}" '
.'title="Ausschreibung Anzeigen">{field_4}</a></td> ';
Nun möchte ich die {blah} ersetzen:
$string = str_replace($string, {field_1}, $row['field_1]);
$string = str_replace($string, {field_2}, $row['field_2]);
$string = str_replace($string, {field_3}, $row['field_3]);
usw.
Dabei gibt es zwei Nachteile:
1. Wenn es jedeoch viele {blah} hat, muss ich
viel zu viel aufschreiben
2. $row['blah'] soll automatisch ausgelesen werden
aus der klammer {balh}
Mit Hilfe der Regulären Ausdrücke kann ich die {blah} auslesen und verwenden:
$string = preg_replace("#{(.+?)}#is", 'AA\1BB', $string);
ergibt: <td>AAfield_1BB</td>
Es soll aber folgendes ergeben:
<td>'.$row['field_1'].'</td>
Ich möchte meine {blahs} durch die Array-Variablen (Resultat einer DB-Abfrage) ersetzen.
Probiert habe ich:
$string = preg_replace("#{(.+?)}#is", $row['\1'], $string);
Aber da bleibe ich stecken.
Hat jemand eine Idee?
Gruss
Schorsch
Lieber Schorsch,
$string = preg_replace("#{(.+?)}#is", 'AA\1BB', $string);
ergibt: <td>AAfield_1BB</td>Es soll aber folgendes ergeben:
<td>'.$row['field_1'].'</td>
Du suchst preg_replace() mit Modifikator 'e'. Das hat mir auch geholfen. Bei Verständnisfragen lesen wir uns wieder!
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Salut Felix
$string = preg_replace("#{(.+?)}#se", '$row['\1']', $string);
Tatsächlich. Hätte nicht gedacht, dass dies so einfach ist!
Besten Dank!
Schorsch