当前位置: 首页 > 知识库问答 >
问题:

如何在将文本文件读入字符串时展开该文件中的变量?

怀刚毅
2023-03-14

在处理html表单输入并通过php发送电子邮件进行响应的上下文中,而不是在代码中间使用冗长的heredoc赋值语句,我希望将电子邮件文本保存在文件中,并在需要时读取它,根据需要扩展嵌入的变量。

使用适当准备的HTML表单数据输入,我以前有…

$message = <<<TEXT  
NAME: {$_POST["fname"]} {$_POST["lname"]}
POSTAL ADDRESS: {$_POST["postal"]}
EMAIL ADDRESS: {$_POST["email"]}
[... message body etc.]
TEXT;

移动文本到一个文件,我然后尝试…

$message = file_get_contents('filename.txt');

…但发现文本中的变量没有展开,导致输出包括作为文字的变量标识符。

当将文件读入字符串时,是否有方法将变量展开?

共有1个答案

阎承嗣
2023-03-14

可能有一个重复的,如果发现我会删除。但有两种方法会浮现在我的脑海中:

如果您像这样构造您的文件:

NAME: {fname} {lname}

然后循环$_post变量:

$message = file_get_contents('filename.txt');

foreach($_POST as $key => $val) {
    $message = str_replace('{'.$key.'}', $val, $message);
}

如果您像这样构造您的文件:

NAME: <?= $_POST["fname"] ?> <?= $_POST["lname"] ?>

然后缓冲输出并包含:

ob_start();
include('filename.txt');
$message = ob_get_clean();
 类似资料:
  • 问题内容: 我有很多小文件,我不想逐行阅读它们。 Go中是否有将整个文件读入字符串变量的函数? 问题答案: 用途: ReadFile读取以文件名命名的文件并返回内容。成功调用将返回err == nil,而不是err == EOF。由于ReadFile读取整个文件,因此不会将Read中的EOF视为要报告的错误。 您会得到一个而不是。如果 确实 需要,可以将其转换为:

  • 问题内容: 我已将文件读入字符串。该文件包含各种名称,每行一个名称。现在的问题是,我希望将这些名称放在String数组中。 为此,我编写了以下代码: 但是我没有得到预期的结果,分割字符串后获得的数组长度为1。这意味着“ fileString”不具有“ \ n”字符,但是文件具有此“ \ n”字符。 那么如何解决这个问题呢? 问题答案: 问题不在于如何分割字符串。那一点是正确的。 您必须查看如何将文

  • 问题内容: 我使用以下代码段在python中读取文件: 输入文件为: 当我打印数据时 如我所见,数据是list形式化的。如何将其制成字符串?而且我怎么删除以及从中字符? 问题答案: 你可以使用:

  • 问题内容: 我将日志保存到sdcard上的.txt文件中,但是一旦保存了两行,它就会覆盖它并重新开始? 这是我的代码: 在恢复中挂载/ data后,/ sdcard和/ data / media / 0中的日志文件会显示完整的日志历史记录,但在设备开机时不会显示完整的日志历史记录 问题答案: 这是完成的方式。以下示例代码在单击提交按钮后将详细信息保存到文件中: 希望这可以帮助 :)

  • 问题内容: 我可以将文件读取为字节数组 但是当我将其转换为字符串时 它将utf16字节视为ASCII 如何正确转换? 输出: 假 [255 254 91 0 83 0 99 0 114 0 105 0 112 0 116 0 32 0 73 0 110 0 102 0 111 0 93 0 13 0] Script I nfo] 更新: 在测试了两个示例之后,我已经了解了确切的问题。 在Windo

  • 问题内容: 我认为能够将文本文件读入和写出字符串数组的能力是相当普遍的要求。从一种语言开始消除最初访问数据库的需求时,它也非常有用。Golang中是否存在? 例如 和 我宁愿使用现有的而不是重复的。 问题答案: 从Go1.1版本开始,有一个bufio.Scanner API可以轻松读取文件中的行。考虑上面的以下示例,该示例使用Scanner重写: