parse_ini_file()不会通过手动确认

时间:2018-04-02 09:11:56

标签: php ini

关于PHP parse_ini_file()中的一些怪癖,我有两个问题。

  

保留字不得用作ini的键   文件。这些包括:null,yes,no,true,false,on,off,none。   值null,off,no和false导致“”,值和on,yes和   除非使用INI_SCANNER_TYPED模式(从PHP开始),否则为“1”的结果为true   5.6.1)。

根据上述内容,如果设置no,则可以使用INI_SCANNER_TYPED作为密钥。那为什么会失败呢?

$ echo "no=1" > a.cfg | php -r 'print_r(parse_ini_file("a.cfg", TRUE, INI_SCANNER_TYPED));'
PHP Warning:  syntax error, unexpected BOOL_FALSE in tmp.cfg on line 1
$ php --version
PHP 7.1.14 (cli) (built: Feb  2 2018 08:41:46) ( NTS )

另外,下面列出的字符的“特殊含义”是什么?手册没有详细说明。

  

字符?{} |&〜!()^“不得在键中使用,并且在值中具有特殊含义。

1 个答案:

答案 0 :(得分:2)

您误解了所引用的文字。它说:

  

nulloffnofalse会产生"" onyestrue会产生"1",除非使用INI_SCANNER_TYPED模式(自PHP 5.6.1起)。

它说的是价值观。在默认模式下,这些会转换为字符串"""1"。在INI_SCANNER_TYPED模式下,这些会转换为布尔值falsetrue

它没有说明关键。这些词仍然不能用作键。

检查其工作原理:https://3v4l.org/5uZFN