php parse_ini_file()有什么特殊的行为需要注意吗?

tpxzln5u  于 2023-06-28  发布在  PHP
关注(0)|答案(2)|浏览(100)

我有一个相当大的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()的行为吗?
jv4diomz

jv4diomz1#

你可以尝试一个“手动”的方法,二分法搜索。
1.拆下管路1333之后的管路。
1.然后删除之前的行由(大)块,直到你没有错误。
1.按较小的块添加行,直到再次出现错误。
你会发现错误。

irtuqstp

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

相关问题