我如何使用PHP来读取外部文件并将内部放入变量?

时间:2009-08-18 13:50:36

标签: php json variables external

我不知道是否正确地形成了这个问题的标题,因为我甚至不知道我想要做的是否有一个名字。

假设我有一个外部文件(例如,名为settings.txt),其中包含以下内容:

template:'xaddict';
editor:'true';
wysiwyg:'false';

这些是简单的名称:值对。 我希望php以这样的方式处理这个文件,我最终得到了具有以下值的php变量:

$template = 'xaddict';
$editor = 'true';
$wysiwyg = 'false';

我不知道我会有多少这些变量。

我该怎么做呢?

文件中的数据是简单的名称:值对。没有嵌套,没有复杂的数据。所有名称都需要转换为$ name,所有值都需要转换为'value',不管它是否真的是一个字符串。

4 个答案:

答案 0 :(得分:6)

$settings = json_decode(file_get_contents($filename));

假设您的文件是有效的JSON格式。如果没有,你可以按摩它,或者你必须使用不同的方法。

答案 1 :(得分:1)

如果您使用JSON,则可以使用以下内容:

extract(json_decode(file_get_contents('settings.json')));

使用提取可能很危险,因此我建议将这些设置存储在数组中:

$settings = json_decode(file_get_contents('settings.json'));

答案 2 :(得分:1)

你想在“editor:'true'”中将'true'解释为字符串还是布尔值?如果有时是字符串,有时是布尔值,你怎么知道哪个?

如果您有“number ='9'”,您是否希望'9'被解释为字符串或整数? '09'会是十进制数还是八进制数? “number ='3.14'”怎么样:字符串还是浮点数?如果有时一个,有时另一个,你怎么知道哪个?

如果你在某个值中有“'”(单引号),它会被转义吗?如果是这样,怎么样?

是否有阵列数据的期望?

编辑:这是使用示例输入检索示例数据的最简单方法,imo:

$file = 'test.csv';
$fp = fopen($file, 'r');
while ($line = fgetcsv($fp, 1024, ':')) {
    $$line[0] = $line[1];
}

答案 3 :(得分:0)

你应该用file()函数读取你的文件到一个数组,然后你应该循环它:对于每一行(file()函数将返回一个数组,每个项目一行),检查是否该行不是空白,然后在“:”字符上爆炸(),修剪碎片,并将它们放入数组中。 你最终会赢得这样的数组:

[template] = xaddict
[editor] = true

然后您可以使用此信息。

会自动将其转换为本地变量:这是一种引入安全风险的好方法,也可能是非常模糊的错误(本解析所引入的局部变量模糊不清)。