Файл INI PHP Parse выдает ошибку о знаке равенства - PullRequest
4 голосов
/ 28 февраля 2011

Я пытаюсь проанализировать INI-файл с URL-адресом в качестве одной из переменных для анализа.Проблема в том, что URL содержит '=', а parse_ini_file выдает ошибку.Я пытался убежать от персонажа, но безрезультатно.Это случается с кем-то еще?И если так, кто-нибудь это исправил?

Ответы [ 4 ]

9 голосов
/ 28 февраля 2011

Вы заключили значение в кавычки?Не должно быть проблемой иметь = в значении, если у вас есть кавычки вокруг вашего значения.Пример:

key1="http://www.google.com?q=test";
2 голосов
/ 21 января 2015

гораздо лучше было бы использовать INI_SCANNER_RAW в качестве 3-го параметра parse_ini_file

parse_ini_file($file, true, INI_SCANNER_RAW);
0 голосов
/ 09 февраля 2015

У меня была такая же проблема, и это сводило меня с ума! Проблема оказалась глупой ... Я создал файл .ini в Windows, используя файл, который я переименовал в .ini. Видимо, осталась какая-то разметка, которую видел PHP, но не в моем Блокноте ++.

Я удалил .ini и создал его на своем хосте Linux. Это решило проблему. Если вы используете WAMP или XAMPP в Windows, попробуйте создать новый файл с помощью только блокнота, который игнорирует любую разметку.

Я знаю, что это старая тема, но я остановился здесь на поиске той же проблемы, поэтому она может помочь кому-то еще.

0 голосов
/ 01 июня 2011

Вот быстрое решение, чтобы исправить проблемы 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;
}
...