跳转到正文

INI 验证器

在服务拒绝启动之前,验证 php.ini、my.cnf、桌面条目或工具设置等 INI 配置文件。验证器会读取每一行,接受分区、键值对、注释和带引号的值,并报告无法识别的行、未闭合的分区标题、空键和未闭合的引号。它还会标记重复的键和分区,并列出每个分区及其键,方便你一目了然地检查结构。

重置

常见问题

这里的 INI 文件符合什么条件才算有效?

每个非空行都必须是分区标题(如 [database])、带值的键(如 host = localhost)或注释。既不属于这些情况的行、未闭合的分区标题、空键或未闭合的带引号值都会被视为错误。错误会使文件无效,并附上行号列出。

INI 没有统一标准。验证器采用哪些规则?

它遵循 PHP、MySQL 和许多工具常用的方言:键和值以 = 分隔;若没有 =,则以 : 分隔。注释以 ; 或 # 开头;未加引号的值中,空白字符后面的 ; 或 # 会开始一条行内注释。分区名称可以包含空格、句点和引号,例如 Git 风格的分区。由于 INI 没有数据类型,因此不会检查值的类型。

重复的键会怎样处理?

同一分区中重复定义的键会作为警告报告,并标出第二次定义所在的行。大多数 INI 解析器会保留最后一个值,因此较早定义的值会被静默忽略。文件仍会报告为有效。

重复的分区会怎样处理?

重复出现的分区标题会作为警告报告,其键会与首次出现的分区中的键合并。有些程序对重复分区的处理方式不同,因此通常最好将它们合并。

支持 extension[] 这样的数组键吗?

支持。以 [] 结尾的键会将其值收集为列表,如 PHP 配置文件中的做法;重复定义此类键不会被报告为重复项。分区列表中只会显示该键一次。

什么是全局键?

出现在第一个分区标题之前的键不属于任何分区。结果中会将它们列为“全局键”,许多工具会将它们视为默认值或顶层设置。

带引号的值如何处理?

双引号中的值可以包含 ;、# 和 =,并支持转义序列 \", \\, \n 和 \t;单引号中的值则按字面内容处理。带引号的值若未在同一行闭合,就会被视为错误。未加引号的值会去除前后的空格。

会列出多少结构信息?

结果会列出每个分区、键的数量及键名,最多显示 200 个分区和每个分区 50 个键,并显示分区和键的总数。最多显示 20 个错误和 20 个警告;若还有更多,也会显示其数量。

能识别 [a.b] 这样的嵌套分区吗?

分区名称会按原样保留,因此 [a.b] 是名为 a.b 的分区,并非 a 的子分区。点号是否表示嵌套取决于具体程序。验证器只会检查名称是否非空以及标题是否闭合。

文件最大可有多大?可以转换吗?

输入大小最多为 5 MiB。若要将有效的 INI 文件转换为 JSON、YAML、TOML 或其他格式,请使用 Data Format Converter;它会将分区映射为对象。

关于 OneClick Pro

OneClick Pro 是一个免费的工具集合,包含超过 150 种网络工具,助你处理日常工作:转换图像和单位、格式化和验证代码、检查域名和 SEO,以及处理文本、日期和数字。所有工具均可免注册、免订阅使用;你输入的内容仅用于计算结果,绝不会被存储。你可以将它用作处理临时任务的快捷工具箱,也可以收藏每天都会用到的工具。