(PHP 4, PHP 5, PHP 7)
parse_ini_file — 解析一个配置文件
$filename
[, bool $process_sections
= false
[, int $scanner_mode
= INI_SCANNER_NORMAL
]] )
parse_ini_file() 载入一个由
filename
指定的 ini
文件,并将其中的设置作为一个联合数组返回。
ini 文件的结构和 php.ini 的相似。
filename
要解析的 ini 文件的文件名。
process_sections
如果将最后的
process_sections
参数设为
TRUE
,将得到一个多维数组,包括了配置文件中每一节的名称和设置。process_sections
的默认值是 FALSE
。
scanner_mode
Can either be INI_SCANNER_NORMAL
(default) or
INI_SCANNER_RAW
. If INI_SCANNER_RAW
is supplied, then option values will not be parsed.
成功时以关联数组 array 返回设置,失败时返回 FALSE
。
版本 | 说明 |
---|---|
5.3.0 |
Added optional scanner_mode parameter.
Single quotes may now be used around variable assignments.
Hash marks (#) may no longer be used as comments
and will throw a deprecation warning if used.
|
5.2.7 |
On syntax error this function will return FALSE rather than an empty
array.
|
5.2.4 | 由数字组成的键名和小节名会被 PHP 当作整数来处理,因此以 0 开头的数字会被当作八进制而以 0x 开头的会被当作十六进制。 |
5.0.0 | 该函数也开始处理选项值内的新行。 |
4.2.1 | 本函数也开始受到安全模式和 open_basedir 的影响。 |
Example #1 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"
Example #2 parse_ini_file() 例子
常量也可以在 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 ) ) 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 ) ) )
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
Note:
本函数和 php.ini 文件没有关系,该文件在运行脚本时就已经处理过了。本函数可以用来读取你自己的应用程序的配置文件。
Note:
如果 ini 文件中的值包含任何非字母数字的字符,需要将其括在双引号中(")。
Note: 有些保留字不能作为 ini 文件中的键名,包括:null,yes,no,true 和 false。值为 null,no 和 false 等效于 "",值为 yes 和 true 等效于 "1"。字符 {}|&~![()" 也不能用在键名的任何地方,而且这些字符在选项值中有着特殊的意义。