我在思考如何将PHP变量保存到txt文件中,并再次检索它们。
例如:
有一个输入框,提交后输入框中的内容将被保存到文本文件中。稍后需要将结果作为变量重新引用。所以假设变量是$text,我需要将其保存到文本文件中,并能够再次检索它。
这应该能够满足你的需求,但是没有更多的上下文信息我不能确定。
将$text
写入文件:
$text = "Anything";
$var_str = var_export($text, true);
$var = "<?php\n\n\$text = $var_str;\n\n?>";
file_put_contents('filename.php', $var);
再次获取它:
include 'filename.php';
echo $text;
<?php return $var_str
。然后您可以使用不同的名称来包含数据,例如$someText = (include 'filename.php');
。 - Nux就我个人而言,我会使用file_put_contents和file_get_contents(它们是fopen,fputs等的封装器)。
此外,如果您要写入任何结构化数据,例如数组,我建议您对文件内容进行序列化和反序列化。
$file = '/tmp/file';
$content = serialize($my_variable);
file_put_contents($file, $content);
$content = unserialize(file_get_contents($file));
抱歉,我现在无法发表评论,否则我会这样做。
除了Christian的答案之外,您还可以考虑使用json_encode
和json_decode
代替serialize
和unserialize
来让您更加安全。PHP手册中有一个警告:
警告
不要将不受信任的用户输入传递给unserialize()。反序列化可能会导致代码被加载和执行,因为对象实例化和自动加载,而恶意用户可能会利用此漏洞。如果需要将序列化数据传递给用户,请使用安全的标准数据交换格式,例如JSON(通过json_decode()和json_encode())。
因此,您最终的解决方案可能如下所示:
$file = '/tmp/file';
$content = json_encode($my_variable);
file_put_contents($file, $content);
$content = json_decode(file_get_contents($file), TRUE);
例如,你有一个名为anyFile.php的文件,并且里面写着$any_variable='hi Frank';
要将该变量更改为hi Jack
,请使用以下代码:
<?php
$content = file_get_contents('anyFile.php');
$new_content = preg_replace('/\$any_variable=\"(.*?)\";/', '$any_variable="hi Jack";', $content);
file_put_contents('anyFile.php', $new_content);
?>
serialize()
和 unserialize()
将数据写入文件。它可以从同一文件读取和写入多个对象 / 变量 / 任何内容。<?php
require 'varDx.php';
$dx = new \varDx\cDX; //create an object
$dx->def('file.dat'); //define data file
$val1 = "this is a string";
$dx->write('data1', $val1); //writes key to file
echo $dx->read('data1'); //returns key value from file
请查看 Github 页面以获取更多信息。它具有读取、写入、检查、修改和删除数据的功能。
使用 fopen
、fwrite
和 fread
的组合。PHP.net有非常好的文档,并对每个函数都提供了示例。
http://us2.php.net/manual/en/function.fopen.php
http://us2.php.net/manual/en/function.fwrite.php
http://us2.php.net/manual/en/function.fread.php
使用serialize()
函数对变量进行序列化,然后将字符串保存到文件中。稍后您可以从文件中读取序列化的变量并重新构建原始变量(无论它是字符串、数组还是对象)。
extract()
函数提取它们。 - Duroth