PHP从字符串中分配变量定义

时间:2011-08-03 20:21:57

标签: php

假设我有一个包含以下行的文件“English.txt”:

$_LANG["accountinfo"] = "Account Information";
$_LANG["accountstats"] = "Account Statistics";

注意:文件扩展名为.txt我可以做更改。没有打开PHP标记(<?php)或任何内容,只是这些行,句号。

我需要提取并实际获取从这些行声明的$_LANG数组。我怎么做?简单地include文件回显每一行,所以我做

ob_start();
include '/path/to/English.txt';
$str = ob_get_clean();

现在,如果我在该字符串上调用eval,我会得到syntax error, unexpected $end。有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:1)

eval(file_get_contents('English.txt'));

然而,确保NOBODY可以改变English.txt,这可能很危险!

答案 1 :(得分:1)

首先,请注意,您应该使用file_get_contents而不是include来进行输出缓冲。由于它不包含<?php标记,因此无需通过脚本处理器运行它。

以下在我的测试中完美无缺:

<?php
$contents = file_get_contents("English.txt");
eval($contents);
var_dump($_LANG);

正如其中一条评论所说,如果您执行上述操作且仍然收到错误,那么您的文件 NOT 确实/只包含那些行。确保文件实际上符合语法。

正如已经提到的,你应该只使用eval作为最后的手段,如果文件和你编写的代码一样安全,那么只能。换句话说,它不能被外界所编辑。