使用注释对配置文件进行多行解析

时间:2014-08-25 07:50:57

标签: php regex config

我需要解析以下类型的配置数据,以便能够查找和更改某个部分中的设置(例如, eth_ph_pure 部分中的参数 adapter >):

[global]
db_ip = 127.0.0.1
db_port = 1215
control_port = 1233

[eth_ph_pure]
adapter_name = eth0
#adapter = 0
loging   = false
log_in   = false
log_out  = false

我使用following regular expression来实现此目的:

/\[eth_ph_pure][^\[]*(?<!#)adapter\s*=\s*(.*?)\s/s

但是如果我在&#39;#&#39; 符号后面添加空格,它会在注释掉的行中找到值。我不需要接收已注释参数的值。

如何修复正则表达式?

1 个答案:

答案 0 :(得分:1)

你可以试试下面的正则表达式,

/\[eth_ph_pure\].*?#\s*adapter\s*=\s*\S+(*SKIP)(*F)|\[eth_ph_pure\].*?\s*adapter\s*=\s*(\S+)/s

DEMO