Forum Webscript.Ru

Программирование => PHP => Тема начата: Foshvad от 27 Апреля 2004, 11:32:29

Название: Проблема с парсингом в parse_ini_file() в 4.3.6
Отправлено: Foshvad от 27 Апреля 2004, 11:32:29
Кто сталкивался  с подобным:

Linux 2.4.21-9.0.3.ELsmp
Server API  CGI
PHP Version 4.3.6


INI файл:
Цитировать

[01]
a= a1

[02]
b= b1

[03]
c= c1

[04]
d= d1

[05]
e= e1

[06]
f= f1

[07]
g= g1

[08]
k= k1

[09]
l= l1

[10]
m= m1

[11]
n= n1



результат работы parse_ini_file($file,true):


Array
(
    [1] => Array
        (
        )

    [2] => Array
        (
        )

    [3] => Array
        (
        )

    [4] => Array
        (
        )

    [5] => Array
        (
        )

    [6] => Array
        (
        )

    [7] => Array
        (
        )

    [0] => Array
        (
        )

    [10] => Array
        (
        )

    [11] => Array
        (
        )

)




Пропущены 8-я и 9-я секция

Файл многократно переписывался и создавался заново в поисках скрытых символов – большая просьба – у кого работает PHP как CGI – попробовать запустить это дело и запостить результат
Название: Проблема с парсингом в parse_ini_file() в 4.3.6
Отправлено: FreeSpace от 27 Апреля 2004, 20:38:43
А ты под SAPI пробовал?

PHP 4.3.6. SAPI, мой результат:
array (
  \'a\' => \'a1\',
  \'b\' => \'b1\',
  \'c\' => \'c1\',
  \'d\' => \'d1\',
  \'e\' => \'e1\',
  \'f\' => \'f1\',
  \'g\' => \'g1\',
  \'k\' => \'k1\',
  \'l\' => \'l1\',
  \'m\' => \'m1\',
  \'n\' => \'n1\',
)
Название: Проблема с парсингом в parse_ini_file() в 4.3.6
Отправлено: Foshvad от 28 Апреля 2004, 09:51:59
Причина проблемы выявлена, спасибо.
Название: Проблема с парсингом в parse_ini_file() в 4.3.6
Отправлено: FreeSpace от 28 Апреля 2004, 21:49:30
Вообще-то на форумах так заведено, что если ты решаешь свою проблему самостоятельно, ты всё равно описываешь причину ошибки и способ её устранения, насколько бы специфическими не были обстоятельства возникновения этой ошибки.
Лично мне всё равно, что у тебя была за ошибка, но ни что так не раздражает, чем найти на форуме подобную тему без решения, когда сам столкнулся с аналогичной проблемой.
Название: Проблема с парсингом в parse_ini_file() в 4.3.6
Отправлено: Foshvad от 29 Апреля 2004, 09:07:09
Каюсь.

Цитировать

tony2001
в Zend Engine используется strtol() для приведения строки к числу.
вот, что говорит мануал по strtol:
 
--------------------------------------------------------------------------------

strtol(const char *nptr, char **endptr, int base);
Если base равно нулю или 16-и, то строка может начинаться с приставки `0x\', что означает использование шестнадцатеричной системы исчисления; иначе, если base равно нулю, используется десятичная система исчисления, кроме случая, когда последующий символ также равен `0\': тогда используется восьмеричная система исчисления.
 

см. тут функцию zend_atoi();
тут (http://cvs.php.net/co.php/ZendEngine2/zend_operators.c?r=1.191)

самый простой выход из ситуации: не называть секции "0...".
в этом случае, все будет нормально.




так что это был вовсе не глюк - надо либо отказаться от ZendEngine либо не использовать 0 в начале секции.