从PHP源获取数组键和值

时间:2012-11-23 14:13:58

标签: php regex arrays

我正在编写配置编辑器。我正在用fopen和fgets逐行读取文件。 我想从字符串中获取数组键和值。我不熟悉正则表达式,这就是我要问的原因。

示例配置文件:

$conf['something'] = 'value';
$conf['other_thing']['another_key'] = 3000;

我无法遍历$ conf数组,因为它是系统中的SuperObject,并且包含许多额外的数据,甚至是inited类......

5 个答案:

答案 0 :(得分:2)

我会这样做:

// get config file as a variable
require_once('config_file.php');

// get keys
$keys = array_keys($conf);

// get config file as a variable
$values = array_values($conf);

答案 1 :(得分:1)

虽然没有直接回答你的问题但是当你写了“我正在编写配置编辑器。”然后我假设你也写下了这个配置文件。因此,假设您的编辑器在$conf数组中保持配置工作时,我只是将其转储为JSON而不是PHP代码:

file_put_contents('config.json', json_encode($conf));

然后在需要时再读回来

$conf = json_decode( file_get_contents('config.json') );

答案 2 :(得分:0)

\$conf\['(.*?)']\s+=\s+'(.*?)';这是你的模式。键位于组1中,值位于组2中。

$[]是特殊字符,这就是您应该逃避它们的原因。 \s+表示空白字符的次数为1次或更多次。

答案 3 :(得分:0)

这是你的正则表达式:

\$conf(\[('.*')\])+\s?=\s?(.*);

第一场比赛是你的关键,最后一场是你的价值

答案 4 :(得分:0)

由于这是php数组,您可以直接遍历它,并获得所需的键值对 否则你可以使用php的函数array_keys从$ conf数组中获取所有键,并使用array_values获取数组值

或者

如果你想创建一个配置编辑器尝试使用ini文件php对创建和使用配置文件有很好的支持,请参阅此函数parse_ini_file这是创建配置文件的标准方法,如果你有太多的键值对