创建一个动态的php文件并定义一个数组

时间:2011-11-03 13:27:05

标签: php

我需要定期更新一些静态站点数据,所以我想在服务器上轻松地保存它的格式。

我正在考虑创建一个可以包含在代码中的php文件,因此准备数据会与浏览器请求分开。

我从数据库中获取数据,所以我现在有一个数组格式的数组。

现在我想创建一个只定义该数组的php文件。

键和值将是基于字符串的值,数据是瑞典语。

有没有办法直接将数组转储到文件中,然后只包含该文件而不进行任何预处理。我希望文件在以下输出中:

$array = array ();
$array ["key"] = "value";
$array ["key"] = "value";
$array ["key"] = "value";
$array ["key"] = "value";

3 个答案:

答案 0 :(得分:3)

我还建议您查看var_export,因为您无需序列化和编码即可使用它。

例如(未经测试):

<?php
$array = array('key' => 'v');
$exported = var_export($array, TRUE);
file_put_contents('/path/to/file', '<?php $var = ' . $exported . '; ?>');
?>

然后你可以通过以下方式阅读:

<?php
include '/path/to/file';
// and now you have access to $var
// of course you may want to change the name of the $var variable as it
// will be brought into global scope (and might conflict)
?>

答案 1 :(得分:1)

使用PHP的serializebase64_encode函数并将结果写入文件。

当您想要使用数据时:只需读取文件,解码并反序列化:

<?php
  // dump data
  $array = array("key"=>"value");
  file_put_contents("test_data.txt", base64_encode(serialize($array)));
  // retrieve data
  $string = file_get_contents("test_data.txt");
  $data = unserialize(base64_decode($string)));
  var_dump($data);

在base64中对数组进行编码将允许您安全地将二进制数据写入文件(例如,扩展字符集)。

答案 2 :(得分:-1)

您可以直接将代码写入文件fwrite($ handle,“$ array = array();”);然后对你正在读回的文件内容做一个eval()。它会起作用,但它很危险,因为如果将任何恶意代码放入文本文件中,它将被执行。

我建议您查看序列化:http://php.net/manual/en/function.serialize.php并编写序列化数据,然后将其反序列化为数组。它更安全。