2010-12-28 14 views
0

Diese Funktion:funktioniert nicht mit PHP arbeiten file_get_contents

public function createMessage($post, $messagename) { 
     $dbData = array(); // don't forget to initialize your array 
     foreach ($post as $key => $value) { 
      $sanitizedValue = strip_tags(ucfirst(strtolower($value))); 
      $message = str_replace('{$'.$key.'}', $sanitizedValue, file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/english/forms/_includes/_emails/' . $messagename . '.html')); 

     } 

     return $message; 
    } 

die Variablennamen ersetzt nicht (die {$ var} sind in der Kopie) in der HTML-Datei, wenn ich file_get_contents verwenden, aber wenn ich Verwenden Sie einfach eine Zeichenfolge anstelle der Funktion file_get_contents, die funktioniert. Jeder hat irgendwelche Gedanken. Ich habe nichts in der Dokumentation von PHP.net gesehen, die geholfen hat.

+0

Er erreicht das richtige Verzeichnis, es macht einfach nicht die str_replace. – sehummel

Antwort

1

Sie laden die Datei für jede Variable neu. Bewegen Sie den file_get_contents Anruf vor der Schleife:

public function createMessage($post, $messagename) { 
    $dbData = array(); // don't forget to initialize your array 
    $message = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/english/forms/_includes/_emails/' . $messagename . '.html'; 
    foreach ($post as $key => $value) { 
    $sanitizedValue = strip_tags(ucfirst(strtolower($value))); 
    $message = str_replace('{$'.$key.'}', $sanitizedValue, $message)); 
    } 
    return $message; 
} 
+0

Danke, Maerlyn. Das hat den Trick gemacht. Glückliche Zauberer. – sehummel

0

Versuchen Sie, die Ausgabe von $_SERVER['DOCUMENT_ROOT'] . '/english/forms/_includes/_emails/' . $messagename . '.html' zu drucken, um sicherzugehen, dass Sie das richtige Verzeichnis erreichen.

1

Nun auch wenn es Sie würde nicht das gewünschte Ergebnis ... werden immer erwarten, da Sie den Inhalt in jeder Iteration der Schleife geöffnet, aber nie den Inhalt zurückspeichern werden Sie nie alle Variablen erfolgreich ersetzen. Sie werden nur die eine Form der letzten Iteration ersetzen. Ich glaube, dass was auch immer das letzte $key in $_POST ist, hat keine Variable, die es in der Nachrichtenschablone ... übereinstimmt, so scheint es, als ob nichts funktioniert, obwohl es wirklich ist.

Sie benötigen file_get_contents outside die Schleife verwenden:

$message = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/english/forms/_includes/_emails/' . $messagename . '.html'; 
    foreach ($post as $key => $value) { 
     $sanitizedValue = strip_tags(ucfirst(strtolower($value))); 
     $message = str_replace('{$'.$key.'}', $sanitizedValue, $message)); 

    } 
Verwandte Themen