Mika: parsen von Variablen aus externem Text-File

Hallo zusammen,

bei einer meiner PHP-Applikationen werden zu verschiedenen Anlässen E-Mails mit entsprechenden Nachrichten per PHP versandt.

Zur besseren Wartung der verschiedenen E-Mail-Nachrichten, möchte ich
die Texte in TXT-Dateien auslagern. In den Texten stecken allerdings
viele Variablen, deren Werte zuvor aus einer Datenbank gelesen werden.

Die Texte (samt Variablennamen) lese ich dann per fgets zeilenweise aus
und speicher den gesamten Text der Einleseprozedur in einer Variablen ab.

Wenn ich diese Variable dann zum Test mit echo ausgebe, werden die Variablen nicht geparst, sondern die Variablennamen einfach in Klartext ausgegeben. So ist es dann auch in den E-Mails.

Gibt es eine Möglichkeit, wie ich die Variablen aus den TXT-Files
beim Einlesen geparst bekomme? Habe es schon mit eval() versucht, bekomme aber folgende Fehlermeldung:

Vielleicht ist mein Ansatz, die Email-Nachrichten in TXT-Files auszulagern auch völliger Blödsinn und jemand kennt eine bessere Variante?

Hier ein Beispielcode zu meinem Problem:

//Beispiel Textdatei

Hallo $row['username'],

bla bla bla...

//Beispiel-Auszug aus Quellcode
$result = mysql_query(SELECT * FROM ....);
$row = mysql_fetch_assoc($result);
$fp = fopen('beispiel_email_text.txt', 'rt');
while($buffer = fgets($fp)){
  $message .= $buffer . '<br />';
}
fclose($fp);
echo $message;

//Ergebnis bei echo
Hallo $row['username'],

bla bla bla...

  1. Hallo Mika.

    Variante 1:
    Wenn der gesamte Text in einer Variable eingelesen ist, kannst Du ihn mit Stringfunktionen bearbeiten lassen. str_replace() böte sich dort an:

    $text=file_get_contents('vorlage.datei');  
    $sear=array('$row[user]','$row[blablabla]'/* etc */);  
    $repl=array($row['user'],$row['blablabla']/* etc */);
    

    Variante 2:

    Du legst in der Vorlage der Mail nicht nur den Text ab, sondern machst daraus ein lauffähigen PHP-Code. Z. B. mittels include() holst Du Dir die Daten, nachdem das Array $row vollständig mit Daten aus der DB befüllt ist:

    <?php  
    $mailtext="Hallo {$row['username']},\n\nbla bla bla";  
    ?>
    

    Gruß aus Berlin!
    eddi

    1. Variante 1:

      $text=file_get_contents('vorlage.datei');
      $sear=array('$row[user]','$row[blablabla]'/* etc */);
      $repl=array($row['user'],$row['blablabla']/* etc */);

      $text=str_replace($sear,$repl,$text);

      ganz verpennt. ;(

      Gruß aus Berlin!
      eddi

    2. Hallo Edgar,

      danke für die schnelle Antwort.

      Variante 2 hatte ich mir auch schon überlegt. Dann wäre es aber wie gesagt, ein lauffähiges PHP-Skript und keine reine Textdatei mehr.

      Deshalb werde ich mal Variante 1 versuchen.