我正在尝试解析具有以下内容的文件并将其显示在表格中。问题是我只能得到第一个租约节。我不知道如何获得其余的?有任何想法吗?
输入:
# The format of this file is documented in the dhcpd.leases manual page.
# This lease file was written by isc-dhcp-V3.0.3b1
lease 192.168.98.25 {
starts 5 2012/10/05 21:18:41;
ends 5 2012/10/05 22:48:15;
tstp 5 2012/10/05 22:18:41;
binding state free;
hardware ethernet 78:d6:f0:c1:7f:b5;
uid "\001x\326\360\301\177\265";
}
lease 192.168.10.1 {
starts 5 2012/10/04 12:23:23;
ends 5 2012/10/05 22:48:15;
binding state active;
next binding state free;
hardware ethernet 56:a3:f0:d1:75:b5;
uid "\001x\326\360\301\177\265";
}
....
....
输出:
HW Address |start time | end time | IP
78:d6:f0:c1:7f:b5 | 2012/10/05 21:18:41 | 2012/10/05 22:48:15 | 192.168.98.25
56:a3:f0:d1:75:b5 | 2012/10/04 12:23:23 | 2012/10/05 22:48:15 | 192.168.10.1
这是我迄今为止尝试过的:
$readfile = file('/etc/dhcp/dhcpd.leases',FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$arstring = implode(" ",$readfile);
$regex=array();
preg_match_all("(lease\s*([0-9.]+)\s*{\s*starts\s*.?\s*([0-9/\s:]*).?\s*ends\s*.?\s*([0-9/\s:]*).*ethernet\s*([\w:]*))", $arstring, $regex,PREG_SET_ORDER);
这给了我:
[0] => Array
(
[0] => lease 192.168.98.25 { starts 5 2012/10/05 21:18:41; ends 5 2012/10/05 22:18:41; tstp 5 2012/10/05 22:18:41; binding state free; hardware ethernet 78:d6:f0:c1:7f:b5; uid "\001x\326\360\301\177\265"; } lease 192.168.98.25 { starts 5 2012/10/05 22:54:15; ends 5 2012/10/05 23:54:15; binding state active; next binding state free; hardware ethernet 78:d6:f0:c1:7f:b5; uid "\001x\326\360\301\177\265"; } lease 192.168.98.25 { starts 5 2012/10/05 22:54:16; ends 5 2012/10/05 23:54:16; binding state active; next binding state free; hardware ethernet 78:d6:f0:c1:7f:b5
[1] => 192.168.98.25
[2] => 2012/10/05 21:18:41
[3] => 2012/10/05 22:18:41
[4] => 78:d6:f0:c1:7f:b5
)