PHP将变量发送到file_get_contents()

Ric*_*ton 10 php file-get-contents

我希望能够通过一些变量发送到文件file_get_contents().

这是firstfile.php:

<?php
$myvar = 'This is a variable';
// need to send $myvar into secondfile.php
$mystr = file_get_contents('secondfile.php');
?>
Run Code Online (Sandbox Code Playgroud)

这是secondfile.php:

The value of myvar is: <?php echo $myvar; ?>
Run Code Online (Sandbox Code Playgroud)

我希望变量$mystr相等'The value of myvar is: This is a variable'

还有其他功能可以让你在PHP中执行此操作吗?

Nic*_*ole 19

获取文件内容运行脚本之间存在很大差异:

  • include- 此PHP指令将指定文件作为脚本运行,范围与include调用范围相同.因此,要将变量"传递"给它,您只需要在调用之前定义它们include. include只能在本地使用(只能包含与PHP服务器在同一文件系统上的文件).

  • file_get_contents- 在本地获取文件时,这只会检索文件中包含的文本.没有完成PHP处理,因此无法"传递"变量.如果您$myvar在上面的示例中进行检查,您将看到它包含确切的字符串" <?php echo $myvar; ?>" - 它尚未执行.

    然而,PHP通过允许file_get_contents引入"远程"文件的内容 - 一个互联网地址,使一些事情变得困惑.在这种情况下,概念是相同的 - PHP只是提取该地址中包含的任何内容的原始结果 - 但是PHP,Java,Ruby或该远程服务器上运行的任何其他内容可能已执行某些操作以产生该结果.

    在这种情况下,您可以GET根据URL的规范(如果它是API或类似的东西)"传递"URL中的变量(称为请求参数).无法传递您选择的尚未指定在该远程服务器将处理的脚本中处理的变量.

    注意:提到的"远程服务器" 可能是你自己的服务器,但是要小心,因为如果你真的不知道它是如何工作的话,这可能会使事情更加混乱(它成为第二个完全独立的请求).通常没有充分的理由去做而不是使用include,即使他们可以完成类似的结果.


Wri*_*ken 18

ob_start();
include 'secondfile.php';
$myvar = ob_get_clean();
Run Code Online (Sandbox Code Playgroud)

但请注意:对于ob_start代码中的许多人来说,通常是一个标志,你应该定义返回字符串的函数,然后你可以选择回音或不回复.


lSt*_*lov 6

我看到这是一个相当古老的讨论,我的答案在 7 年后可能不太相关,但只是想分享如何解决同一问题。我只是在 secondfile.php 中添加了一个虚拟文本(在我的例子中是 ttt555rrrttt),然后我只是用我想要的字符串替换该文本。

$value_to_add = "some value";

$myvar = file_get_contents('secondfile.php');
$myvar = str_replace("ttt555rrrttt", "$value_to_add", $myvar);
Run Code Online (Sandbox Code Playgroud)

这对我有用,也许对其他人有用。

不知道从性能的角度来看它会有多好,但请记住,我正在使用它向用户发送电子邮件模板,性能应该不是问题。