假设我有一个包含以下行的文件“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
。有什么想法吗?
感谢。
答案 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
作为最后的手段,如果文件和你编写的代码一样安全,那么只能。换句话说,它不能被外界所编辑。