php对特殊格式文件的操作

zhusnow 2010-08-10 10:34:53
例:
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 等
...全文
102 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2010-08-12
  • 打赏
  • 举报
回复
$s = " user within TestTime {
";
$p = "/^\s*\w+\s+within\s+\w+/i";

echo preg_match($p, $s, $r) ? 'yes' : 'no';


从文件读取内容也要写吗?
zhusnow 2010-08-12
  • 打赏
  • 举报
回复
帮忙写一个只匹配string winthin string的正则表达式,
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
}
}
是从一个文件中读取的,是一行行的数组
helloyou0 2010-08-11
  • 打赏
  • 举报
回复
读出来用正则等一步步分析啊,
别人没法说什么详细的,因为不知道你这个文件里的含义和约定.

不知道你遇到的困难在哪里?
zhusnow 2010-08-11
  • 打赏
  • 举报
回复
我想读取把
user within TestTime {
pass !movies !politics !news !video !forum any
}else {
pass any
} 类型的数据一次写入到acl{}里面,我用正则表达式可以脱去外面的一层acl{},但匹配不了user within TestTime
xuzuning 2010-08-11
  • 打赏
  • 举报
回复
$s = <<< TEXT
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);

zhusnow 2010-08-11
  • 打赏
  • 举报
回复
谁能帮忙写正则表达式与foo-clients within workhours ,缩进一个Tab
acl {
admin {
pass any
}
foo-clients within workhours {
pass !adv !aggressive !alcohol !automobile_bikes any
} else {
pass any
}
}
zhusnow 2010-08-11
  • 打赏
  • 举报
回复
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
}
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{}内
xuzuning 2010-08-11
  • 打赏
  • 举报
回复
这样说吧,把用你的例子想要得到的结果贴出来
CunningBoy 2010-08-10
  • 打赏
  • 举报
回复
可以考虑用正则,但是挺复杂的。
这样的文件结构,你没有考虑在输出的时候时候用xml代替?

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧