2011-02-28 69 views
4

我想解析出一個INI文件,它有一個URL作爲要解析的變量之一。問題是,URL中包含'=',parse_ini_file吐出一個錯誤。我試圖逃避角色,但無濟於事。這是否發生在其他人身上?如果是這樣,有誰修理它?PHP解析INI文件給我關於等號的錯誤

回答

9

您是否將該值用引號引起來?只要你的價值有引號,只要價值中有=就不成問題。例如:

key1="http://www.google.com?q=test"; 
0

這是一個快速解決方案,用於解決等號的parse_ini_ *問題。您還可以使用正則表達式,爆炸陣列等

function parseIniFile($file) { 
if (!is_file($file)) return null; 
$iniFileContent = file_get_contents($file); 
return parseIniString($iniFileContent); 
} 

/* solves the equalitiy sign problem */ 
function parseIniString($iniFileContent==''){ 
$iniArray = array(); 
$iniFileContentArray = explode("\n", $iniFileContent); 
foreach ($iniFileContentArray as $iniFileContentArrayRow){ 
    $iniArrayKey = substr($iniFileContentArrayRow, 0, strpos($iniFileContentArrayRow, '=')); 
    $iniArrayValue = substr($iniFileContentArrayRow, (strpos($iniFileContentArrayRow, '=')+1)); 
    $iniArray[$iniArrayKey] = $iniArrayValue; 
} 
return $iniArray; 
} 
+0

我真的放棄了,並且爲INI解析寫了一個非常棒的類。 https://github.com/psion/INI-Class – psion 2011-11-19 07:29:37

2

更好的將是使用​​我有同樣的問題的parse_ini_file

parse_ini_file($file, true, INI_SCANNER_RAW); 
0

爲第三個參數,它驅使我瘋了!問題最終變得愚蠢......我在Windows中創建了.ini文件,使用一個我重命名爲.ini的文件。顯然,PHP有一些標記,但不是在我的Notepad ++中。

我刪除了.ini,並在我的Linux主機上創建了一個。這解決了這個問題。如果您在Windows上使用WAMP或XAMPP,請嘗試使用記事本創建一個新文件,該文件不考慮任何標記。

我知道這是一個老話題,但我最終在這裏尋找同樣的問題,所以它可能會幫助別人。