2011-08-03 77 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

對於相同的解決方案 –