parse_ini_file
(PHP 4, PHP 5, PHP 7)
parse_ini_file - 解析配置文件
描述
array parse_ini_file ( string $filename [, bool $process_sections = false [, int $scanner_mode = INI_SCANNER_NORMAL ]] )
parse_ini_file()将加载到指定的ini文件中filename
,并将其中的设置返回到关联数组中。
ini文件的结构与php.ini相同。
参数
filename
正在解析的ini文件的文件名。
process_sections
通过设置process_sections
参数TRUE
,您将得到一个多维数组,并且包含部分名称和设置。process_sections
is 的默认值是FALSE
scanner_mode
可以是INI_SCANNER_NORMAL
(默认)或INI_SCANNER_RAW
。如果INI_SCANNER_RAW
提供,则不会分析选项值。
至于PHP 5.6.1也可以指定为INI_SCANNER_TYPED
。在此模式下,布尔型,空和整数类型在可能的情况下被保留。将字符串值“true”,“on”和“yes”转换为TRUE
。“false”,“off”,“no”和“none”被认为是FALSE
。“null”转换为NULL
键入模式。而且,如果可能的话,所有的数字字符串都被转换为整数类型。
返回值
设置在成功时以关联数组形式返回,并在失败时返回FALSE
。
Changelog
版本 | 描述 |
---|---|
7.0.0 | 哈希标记(#)不再被视为注释。 |
5.6.1 | 增加了新的INI_SCANNER_TYPED模式。 |
5.3.0 | 增加了可选的scanner_mode参数。单引号现在可以用于变量赋值。散列标记(#)不应再用作注释,并且如果使用则会抛出弃用警告。 |
5.2.7 | 在语法错误时,此函数将返回FALSE而不是空数组。 |
5.2.4 | 由数字组成的键和片段名称现在被评估为PHP整数,因此以0开头的数字被评估为八进制数,而以0x开头的数字评估为十六进制数。 |
5.0.0 | 用双引号括起来的值可以包含新行。 |
4.2.1 | 此功能现在受安全模式和open_basedir的影响。 |
示例
Example #1 Contents of sample.ini
; This is a sample configuration file
; Comments start with ';', as in php.ini
[first_section]
one = 1
five = 5
animal = BIRD
[second_section]
path = "/usr/local/bin"
URL = "http://www.example.com/~username"
[third_section]
phpversion[] = "5.0"
phpversion[] = "5.1"
phpversion[] = "5.2"
phpversion[] = "5.3"
urls[svn] = "http://svn.php.net"
urls[git] = "http://git.php.net"
Example #2 parse_ini_file() example
常量也可以在ini文件中进行解析,所以如果在运行parse_ini_file()之前将常量定义为ini值,它将会被集成到结果中。只有ini值被评估。例如:
<?php
define('BIRD', 'Dodo bird');
// Parse without sections
$ini_array = parse_ini_file("sample.ini");
print_r($ini_array);
// Parse with sections
$ini_array = parse_ini_file("sample.ini", true);
print_r($ini_array);
?>
上面的例子会输出类似于:
Array
(
[one] => 1
[five] => 5
[animal] => Dodo bird
[path] => /usr/local/bin
[URL] => http://www.example.com/~username
[phpversion] => Array
(
[0] => 5.0
[1] => 5.1
[2] => 5.2
[3] => 5.3
)
[urls] => Array
(
[svn] => http://svn.php.net
[git] => http://git.php.net
)
)
Array
(
[first_section] => Array
(
[one] => 1
[five] => 5
[animal] => Dodo bird
)
[second_section] => Array
(
[path] => /usr/local/bin
[URL] => http://www.example.com/~username
)
[third_section] => Array
(
[phpversion] => Array
(
[0] => 5.0
[1] => 5.1
[2] => 5.2
[3] => 5.3
)
[urls] => Array
(
[svn] => http://svn.php.net
[git] => http://git.php.net
)
)
)
Example #3 parse_ini_file() parsing a php.ini file
<?php
// A simple function used for comparing the results below
function yesno($expression)
{
return($expression ? 'Yes' : 'No');
}
// Get the path to php.ini using the php_ini_loaded_file()
// function available as of PHP 5.2.4
$ini_path = php_ini_loaded_file();
// Parse php.ini
$ini = parse_ini_file($ini_path);
// Print and compare the values, note that using get_cfg_var()
// will give the same results for parsed and loaded here
echo '(parsed) magic_quotes_gpc = ' . yesno($ini['magic_quotes_gpc']) . PHP_EOL;
echo '(loaded) magic_quotes_gpc = ' . yesno(get_cfg_var('magic_quotes_gpc')) . PHP_EOL;
?>
上面的例子会输出类似于:
(parsed) magic_quotes_gpc = Yes
(loaded) magic_quotes_gpc = Yes
笔记
注意:这个函数与php.ini文件无关。它已在您运行脚本时处理完毕。这个函数可以用来读取你自己的应用程序的配置文件。
注意:如果ini文件中的值包含任何非字母数字字符,它需要用双引号(“)括起来。
注意:有些保留字不能用作ini文件的键。这些包括:null,yes,no,true,false,on,off,none。Value null,off,no和false结果在“”,和valuses on,yes和true结果在“1”,除非
INI_SCANNER_TYPED
使用模式(PHP 5.6.1)。字符?{}|&~!()^"不得在钥匙的任何地方使用,并且在价值中具有特殊的含义。
注意:不带等号的条目将被忽略。例如,“foo”被忽略,而“bar =”被解析并添加一个空值。例如,MySQL在my.cnf中有一个“no-auto-rehash”设置,它没有取值,所以它被忽略。
另请参阅
- parse_ini_string() - 解析配置字符串
← move_uploaded_file
parse_ini_string →
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com