我正在编写配置编辑器。我正在用fopen和fgets逐行读取文件。 我想从字符串中获取数组键和值。我不熟悉正则表达式,这就是我要问的原因。
示例配置文件:
$conf['something'] = 'value';
$conf['other_thing']['another_key'] = 3000;
我无法遍历$ conf数组,因为它是系统中的SuperObject,并且包含许多额外的数据,甚至是inited类......
答案 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这是创建配置文件的标准方法,如果你有太多的键值对