2011-08-03 59 views
1

分配变量定义比方说,我有一个文件“English.txt”包含这些行:PHP从字符串

$_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

像这样意想不到的结束可能意味着文件中有一个未终止的字符串。 –

+0

我认为每行解析引号之间的两个单词(例如“accountinfo”,“Account Information”)并存储在数组中是另一种可以使用的解决方案。您不能包含不表示它是php文件的文件。 – user482594

+0

它似乎对我来说工作得很好......至少在这两行中。 –

回答

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

但是,请确定NOBODY可以更改English.txt,它可能是危险的!

+0

该文件是语言文件,并相信我,我确定不是这个暴行的作者!无论如何,我只需要使用它。我不知道为什么这个工作,而不是输出缓冲,但谢谢! –

1

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

下完全在我的测试:

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

作为一个评论说,如果你做到以上和仍然得到一个错误,那么你的文件不正好包含/只那些线。确保文件实际上符合语法。

正如已经提到的,你应该使用eval只能作为最后的手段,并只有如果该文件是为安全执行,因为你写任何代码。换句话说,它不能被外界所编辑。

+0

对于相同的解决方案 –