PHP | parse_ini_file 函數
怎樣解析配置文件
最近更新時間 2021-01-19 13:44:10
parse_ini_file 函數解析一個配置文件。
parse_ini_file() 函數定義一個必填參數和兩個可選參數。解析成功後按鍵值對返回聯合數組。ini 文件結構和 php.ini 相似。
函數定義
parse_ini_file ( string $filename , bool $process_sections = false , int $scanner_mode = INI_SCANNER_NORMAL ) : array
// 源文件位於:ext/standard/basic_functions.c
# 函數定義
PHP_FUNCTION(parse_ini_file)
{
char *filename = NULL;
size_t filename_len = 0;
zend_bool process_sections = 0;
zend_long scanner_mode = ZEND_INI_SCANNER_NORMAL;
zend_file_handle fh;
zend_ini_parser_cb_t ini_parser_cb;
ZEND_PARSE_PARAMETERS_START(1, 3)
Z_PARAM_PATH(filename, filename_len)
Z_PARAM_OPTIONAL
Z_PARAM_BOOL(process_sections)
Z_PARAM_LONG(scanner_mode)
ZEND_PARSE_PARAMETERS_END();
if (filename_len == 0) {
zend_argument_value_error(1, "cannot be empty");
RETURN_THROWS();
}
/* Set callback function */
if (process_sections) {
ZVAL_UNDEF(&BG(active_ini_file_section));
ini_parser_cb = (zend_ini_parser_cb_t) php_ini_parser_cb_with_sections;
} else {
ini_parser_cb = (zend_ini_parser_cb_t) php_simple_ini_parser_cb;
}
/* Setup filehandle */
zend_stream_init_filename(&fh, filename);
array_init(return_value);
if (zend_parse_ini_file(&fh, 0, (int)scanner_mode, ini_parser_cb, return_value) == FAILURE) {
zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
}
參數
- checkfilename - 要解析的 ini 文件的文件名。
- checkprocess_sections - 如果設置為 true,將返回一個多維數組,包括了配置文件中每一節的名稱和設置。
返回值
- checkbool - 成功時返回一個關聯數組,失敗時返回 false。
示例1: - 使用 parse_ini_file() 函數解析配置文件。
<?php
/**
* PHP parse_ini_file() 函數解析配置文件。
*
* @since Version 1.0.0
* @filesource
*/
// 定義靜態變量
define('BIRD', 'Dodo bird');
// 解析 sample.ini 文件
// 文件中的靜態變量 BIRD 會自動替換
$arr_ini = parse_ini_file('sample.ini');
print_r($arr_ini);
Array ( [five] => 5 [animal] => Dodo bird )