不';不要使用PHP文件获取内容

不';不要使用PHP文件获取内容,php,Php,此功能: 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)));

此功能:

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;
    }

当我使用file_get_contents时,不会替换HTML文件中的变量名(副本中为{$var}),但是如果我只使用字符串而不是file_get_contents函数,它会工作。任何人都有任何想法。我在PHP.net的文档中没有看到任何有用的东西。

尝试打印
$\u服务器['DOCUMENT\u ROOT']的输出/英文/表格/_包括/_电子邮件/'$messagename。html'
以确保您到达了正确的目录。

您正在为每个变量加载文件。将
file\u get\u 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;
}
    $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));

    }

即使是这样,你也不会得到你期望的结果。。。由于您在循环的每个迭代中打开内容,但从未将内容保存回,因此您将永远无法成功替换所有变量。您将只替换上一次迭代中的一个表单。我猜无论最后一个
$键在
$\u POST
中是什么,消息模板中都没有与之匹配的变量。。。所以看起来好像什么都不起作用,即使它真的起作用了

您需要使用
file\u获取循环外部的内容

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

    }

它到达了正确的目录,只是没有进行str_替换。