【问题标题】:Is there a special behavior of parse_ini_file() I should be aware of? [closed]我应该注意 parse_ini_file() 的特殊行为吗? [关闭]
【发布时间】:2018-07-27 08:14:27
【问题描述】:

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

【问题讨论】:

  • “是否有工具可以帮助我检查我的 ini 文件的语法?” - 任何具有配对匹配功能的优秀代码编辑器都是您“需要的”。

标签: php arrays ini


【解决方案1】:

您可以尝试“手动”方法,二分法搜索。

  1. 删除第 1333 行之后的行。
  2. 然后删除(大)块之前的行,直到没有错误为止。
  3. 按小块添加行,直到再次出现错误。

你会发现错误。

【讨论】:

    【解决方案2】:

    我在 PHP 手册中找到:

    字符 ?{}|&~![()^" 不得用于键中的任何位置,并且在值中具有特殊含义。

    PHP 5.3.0我们可以设置第三个参数scanner_mode。所以 使用INI_SCANNER_RAW 作为第三个参数调用parse_ini_file() 就可以了——函数不计算值。

    默认情况下,该函数使用INI_SCANNER_NORMAL 模式并评估值。

    【讨论】:

      猜你喜欢
      • 2013-02-05
      • 2013-08-05
      • 2011-09-01
      • 2023-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      相关资源
      最近更新 更多