Schosch: Reguläre Ausdrücke Ersetzungen Array

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}

Was bisher geschah:

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

  1. 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.

    1. Salut Felix

      $string = preg_replace("#{(.+?)}#se", '$row['\1']', $string);

      Tatsächlich. Hätte nicht gedacht, dass dies so einfach ist!
      Besten Dank!

      Schorsch