我希望能够通过file_get_contents()
发送一些变量到文件。
这是firstfile.php:
<?php
$myvar = 'This is a variable';
// need to send $myvar into secondfile.php
$mystr = file_get_contents('secondfile.php');
?>
这是secondfile.php:
The value of myvar is: <?php echo $myvar; ?>
我想让变量$mystr
等于'The value of myvar is: This is a variable'
有没有其他函数可以让你在PHP中做到这一点?
获取文件的内容和运行脚本:
有很大的区别include
—这个PHP指令将指定的文件作为脚本运行,其作用域与include
调用的作用域相同。因此,要将变量"传递"给它,只需要在调用include
之前定义它们。include
只能在本地使用(只能包括与PHP服务器在同一文件系统上的文件)file_get_contents
—在本地获取文件时,这只是检索文件中包含的文本。没有PHP处理,所以没有办法"传递"变量。如果您在上面的例子中检查$myvar
,您将看到它包含确切的字符串"<?php echo $myvar; ?>
" —未执行然而,PHP允许
file_get_contents
拉入一个"远程"文件的内容,这让一些事情有点混乱—Internet地址。在这种情况下,概念是相同的—PHP只会提取包含在该地址的原始结果—但是PHP, Java, Ruby,或者其他在远程服务器上运行的程序可能已经执行了一些操作来产生这个结果。在这种情况下,您可以根据URL的规范(如果它是API或类似的东西)"传递"URL中的变量(称为
GET
请求参数)。如果您选择的变量没有指定要在脚本中处理,则无法传递该变量,该脚本将由远程服务器处理。注意:引用的"远程服务器"可能是您自己的服务器,但是要小心,因为如果您不真正知道它是如何工作的,这会使事情变得更加混乱(它变成了第二个完全独立的请求)。通常没有很好的理由这样做,而不是使用
include
,即使它们可以实现类似的结果。
ob_start();
include 'secondfile.php';
$myvar = ob_get_clean();
请注意:对于代码中的许多ob_start
通常是一个标志,您应该定义返回字符串的函数,然后您可以选择是否回显
我知道这是一个相当古老的讨论,我的答案可能不太相关7年后,但只是想分享如何解决同样的问题。我只是在secondfile.php中添加了一个虚拟文本(在我的例子中是ttt555rrrttt),然后我只是用我想要的字符串替换该文本。
$value_to_add = "some value";
$myvar = file_get_contents('secondfile.php');
$myvar = str_replace("ttt555rrrttt", "$value_to_add", $myvar);
这对我有用,也许对别人也有用。
不知道从性能的角度来看它会有多好,但考虑到我正在使用它向用户发送电子邮件模板,性能应该不是问题。
您可以使用sprintf函数,例如:firstfile.txt
The value of my var is: %s
secondfile.php
<?php
$f = file_get_contents("firstfile.txt");
$var = "some";
echo sprintf($f, $var);
结果将是
var的值是:some
下面的代码片段展示了如何使用PHP函数file_get_contents发送HTTP post请求的简单方法:
<?php
$url = 'http://url.com/path';
$data = array('param1' => 'value1', 'param2' => 'value2')
// use key 'http' even if you send the request to https://...
$options = array('http' => array(
'method' => 'POST',
'content' => http_build_query($data)
));
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
print_r($result);
OR在URL中传递变量(php) &file_get_contents ()