关于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 )
另外,下面列出的字符的“特殊含义”是什么?手册没有详细说明。
字符?{} |&〜!()^“不得在键中使用,并且在值中具有特殊含义。
答案 0 :(得分:2)
您误解了所引用的文字。它说:
值
null
,off
,no
和false
会产生""
和值on
,yes
和true
会产生"1"
,除非使用INI_SCANNER_TYPED
模式(自PHP 5.6.1起)。
它说的是价值观。在默认模式下,这些值会转换为字符串""
和"1"
。在INI_SCANNER_TYPED
模式下,这些值会转换为布尔值false
和true
。
它没有说明关键。这些词仍然不能用作键。
检查其工作原理:https://3v4l.org/5uZFN