例:
src user {
ip 192.168.1.30
}
time testTime {
weekly smw
}
acl {
user within TestTime {
pass !movies !politics !news !video !forum any
}else {
pass any
}
}
如何写入到acl{ 里面,且读取出user,TestTime,及movies ,politics 等
src user {
ip 192.168.1.30
}
time testTime {
weekly smw
}
acl {
user within TestTime {
pass !movies !politics !news !video !forum any
}else {
pass any
}
}
如何写入到acl{ 里面,且读取出user,TestTime,及movies ,politics 等
这样的文件结构,你没有考虑在输出的时候时候用xml代替?
user within TestTime {
pass !movies !politics !news !video !forum any
}else {
pass any
} 类型的数据一次写入到acl{}里面,我用正则表达式可以脱去外面的一层acl{},但匹配不了user within TestTime
ip 192.168.1.30
}
time testTime {
weekly smw
}
acl {
user within TestTime {
pass !movies !politics !news !video !forum any
}else {
pass any
}
name within TestTime {
pass !movies !politics !news !video !forum any
}else {
pass any
}
uname within TestTime {
pass !movies !politics !news !video !forum any
}else {
pass any
}
}
每保存一次
都把 uname within TestTime {
pass !movies !politics !news !video !forum any
}else {
pass any
} 写入到acl{}内
acl {
admin {
pass any
}
foo-clients within workhours {
pass !adv !aggressive !alcohol !automobile_bikes any
} else {
pass any
}
}
src user {
ip 192.168.1.30
}
time testTime {
weekly smw
}
acl {
user within TestTime {
pass !movies !politics !news !video !forum any
}else {
pass any
}
}
TEXT;function foo($s) {
preg_match('/acl\s+{(.+)}/is', $s, $p); //提取 acl 中的内容
preg_match('/(.+within TestTime {.+}.+})/isU', $p[1], $r); //提取第一节
$s = str_replace($p[1], $p[1].$r[1], $s);
return $s;
}
//执行一次
echo $s = foo($s);
//再执行一次,看看效果是你要的吗?
echo $s = foo($s);
src user {
ip 192.168.1.30
}
time testTime {
weekly smw
}
acl {
user within TestTime {
pass !movies !politics !news !video !forum any
}else {
pass any
}
}
是从一个文件中读取的,是一行行的数组
";
$p = "/^\s*\w+\s+within\s+\w+/i";echo preg_match($p, $s, $r) ? 'yes' : 'no';
从文件读取内容也要写吗?