我正在尝试解析一个具有URL作为要解析的变量之一的INI文件。问题是,URL中包含'=',parse_ini_file会发出错误。我试图逃避这个角色,但无济于事。这会发生在其他人身上吗?如果是这样,有人修理过吗?
答案 0 :(得分:9)
您是否将该值括在引号中?只要在值附近有引号,就不应该在值中包含=。例如:
key1="http://www.google.com?q=test";
答案 1 :(得分:2)
更好的是使用INI_SCANNER_RAW
作为parse_ini_file
parse_ini_file($file, true, INI_SCANNER_RAW);
答案 2 :(得分: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;
}
答案 3 :(得分:0)
我有同样的问题,它让我疯了!问题最终变得愚蠢......我在Windows中使用我重命名为.ini的文件创建了.ini文件。显然有一些标记是由PHP看到的,但不是在我的Notepad ++中。
我删除了.ini并在我的Linux主机上创建了一个.ini。这解决了这个问题。如果您在Windows上使用WAMP或XAMPP,请尝试使用记事本创建一个新文件,忽略任何标记。
我知道这是一个古老的话题,但我最终在这里寻找同样的问题,所以它可能会帮助别人。