我有一个相当大的INI
文件 (大约100kb,超过2000行),我试图用PHP解析它:$ini_array = parse_ini_file("config.ini");
但是函数抛出一个警告:PHP Warning: syntax error, unexpected '(' in config.ini on line 1334 in ...
查看1334
行不会显示任何语法错误。然后我读了这个answer:
简短回答:
不要相信行号,在错误中提到的行之前的行中查找语法错误。
我确信文件中没有错误,因为它在生产中被其他用Pascal编写的工具使用。
那么
- 如何手动检查文件中的错误?
- 如果文件中不存在语法错误,那么我应该注意
parse_ini_file()
的行为吗?
2条答案
按热度按时间jv4diomz1#
你可以尝试一个“手动”的方法,二分法搜索。
1.拆下管路1333之后的管路。
1.然后删除之前的行由(大)块,直到你没有错误。
1.按较小的块添加行,直到再次出现错误。
你会发现错误。
irtuqstp2#
我在PHP手册中发现:
角色?{}|&~![()^”不能在键中的任何地方使用,并且在值中具有特殊含义。
从
PHP 5.3.0
我们可以设置第三个参数scanner_mode
。因此,调用parse_ini_file()
,并将INI_SCANNER_RAW
作为第三个参数,这就成功了--函数不计算值。默认情况下,该函数使用
INI_SCANNER_NORMAL
模式并计算值。参考:https://www.php.net/manual/function.parse-ini-string.php