我正在尝试解析一个包含URL变量的INI文件。问题是,该URL中包含'='号,导致parse_ini_file报错。我试图转义字符,但无济于事。请问有人遇到过类似问题吗?如果有,有人解决了吗?
你是否将值用引号括起来了?只要在值的周围加上引号,value 中包含 = 不应该成为问题。例如:
key1="http://www.google.com?q=test";
更好的方法是在parse_ini_file
函数的第三个参数中使用INI_SCANNER_RAW
parse_ini_file($file, true, INI_SCANNER_RAW);
这里有一个快速解决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;
}