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

PHP - Parse ini file and access single values

在 Python 中,您可以解析 .ini 文件并像这样访问单个值:

myini.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)。

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

myini.ini

[STRINGS]
mystring = fooooo
value = foo_bar

test.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 设置 glom 到同一个对象中。如果您希望像 python 示例中那样将事物分段,请为 process_sections 参数(第二个参数)传递 true

test2.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(使用正则表达式模式)与实际搜索的部分名称相匹配。

这种方法的本质是减少内存占用,同时有很多并发请求同时发生,所以在这种情况下我们使用任意长度的字符串对象作为缓冲区。

祝你好运,伙计。