2010-12-28 9 views
0

Эта функция:Не работает с PHP 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; 
    } 

не заменяет имена переменных (которые {$ вар} в копии) в HTML-файл, когда я использую file_get_contents, но если я просто используйте строку вместо функции file_get_contents, с которой она работает. У кого-нибудь есть мысли. Я ничего не видел в документации PHP.net, которая помогла.?

+0

Он достигает правой директории, он просто не делает str_replace. – sehummel

ответ

1

Вы повторно загружаете файл для каждой переменной. Перемещение file_get_contents вызова перед циклом:

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

Спасибо, Maerlyn. Это сделал трюк. Счастливое волшебство. – sehummel

0

Попробуйте распечатать вывод $_SERVER['DOCUMENT_ROOT'] . '/english/forms/_includes/_emails/' . $messagename . '.html', чтобы убедиться, что вы достигли нужного каталога.

1

Ну даже если это вы не было бы получать результат, который вы ожидаете ... так как вы раскрываете содержание в каждой итерации цикла, но никогда не сохранить содержимое обратно вы никогда не замените все переменные успешно. Вы замените только одну форму последней итерацией. Im goign, чтобы догадаться, что все последние $key находится в $_POST, не имеет переменной, соответствующей ей в шаблоне сообщения ... так что кажется, что ничего не работает, даже если это действительно так.

Вы должны использовать file_get_contents outside цикл:

$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)); 

    } 
Смежные вопросы