例:
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 等

解决方案 »

  1.   

    可以考虑用正则,但是挺复杂的。
    这样的文件结构,你没有考虑在输出的时候时候用xml代替?
      

  2.   

    我想读取把
    user within TestTime {
      pass !movies !politics !news !video !forum any
    }else {  
      pass any
    }  类型的数据一次写入到acl{}里面,我用正则表达式可以脱去外面的一层acl{},但匹配不了user within TestTime 
      

  3.   

    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{}内
      

  4.   

    谁能帮忙写正则表达式与foo-clients within workhours ,缩进一个Tab
    acl {
    admin {
    pass  any
    }
    foo-clients within workhours {
    pass        !adv !aggressive !alcohol !automobile_bikes any
    } else {
    pass any
    }
    }
      

  5.   

    $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);
      

  6.   

    帮忙写一个只匹配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
      }   
    }
    是从一个文件中读取的,是一行行的数组
      

  7.   

    $s  = "  user within TestTime {
    ";
    $p = "/^\s*\w+\s+within\s+\w+/i";echo preg_match($p, $s, $r) ? 'yes' : 'no';
    从文件读取内容也要写吗?