PHP - 解析 ini 文件并访问单个值


PHP - Parse ini file and access single values

在Python中,你可以解析一个.ini文件并访问单个值,如下所示:

米尼.ini

[STRINGS]
mystring = fooooo
value = foo_bar

script.py

import configparser
config = configparser.ConfigParser()
# ----------------------------------------------------------------------
config.read("myini.ini")
test = config["STRINGS"]["mystring"]
print (test)      #-> OUTPUT: fooooo

如何在 PHP 中执行相同的操作?不幸的是,我找不到任何例子。

不用担心,解析.ini文件是一种标准方法。(请参阅 php 文档中的parse_ini_file)。

使用您的文件作为此示例的基础:

米尼.ini

[STRINGS]
mystring = fooooo
value = foo_bar

测试.php

$ini_array = parse_ini_file("myini.ini");
print_r($ini_array); # prints the entire parsed .ini file
print($ini_array['mystring']); #prints "fooooo"

请注意,默认情况下,parse_ini_file会忽略部分并将所有 ini 设置都放入同一对象中。如果您希望像 python 示例中那样按部分范围限定内容,请为 process_sections 参数(第二个参数)传递true

测试2.php

$ini_array = parse_ini_file("myini.ini", true /* will scope sectionally */);
print($ini_array['mystring']); #prints nothing
print($ini_array['STRINGS']['mystring']); #prints fooooo

从中间方法中,要获取匹配部分,它需要从一行到另一行读取任何 INI 文件,在这种情况下,您可以使用 fgets 函数或stream_get_line函数读取每一行,直到部分成立或文件结束(未成立)。

在每一行中,我们都可以使用与搜索的实际部分名称匹配的preg_match(使用正则表达式模式)。

这种方法的本质是减少内存使用,同时发生许多并发请求,因此在这种情况下,我们使用任何足够长度的字符串对象作为缓冲区。

祝你好运,伙计。

将单个值从 php.ini 读取到变量中的最简单方法是使用 ini_get() 函数,如下所示:

$php_ini_option_name = 'error_reporting';
$php_ini_option_value = ini_get($php_ini_option_name);
echo "PHP.ini option '" . $php_ini_option_name . "' = " . $php_ini_option_value;

这将在成功时返回配置选项的字符串值。根据文档,它将为 NULL 值打印一个空字符串,如果 php 中不存在该选项,则为 FALSE.ini但这不符合我的经验。如果该值在 php 中设置为"On",则从内存中返回.ini ini_get将返回"1"。这将导致人们期望设置为"Off"的值将返回"0",但它通常会为我返回一个空白字符串。此外,不存在的选项名称通常返回一个空白字符串。我不记得处理过NULL,所以你的里程可能会有所不同。基本上,您需要了解并准备好处理系统在特殊情况下返回的内容。

ini_get应该在所有版本的 PHP>= 4 中可用。