发布于 1970-01-01 08:00
  • 2 个回答
    • 贴一个perl5的,对perl5不熟悉,写的不好

      if ($line =~ m/[IP|Agent|URL|POST|COOKIE|ErrorCode|Result|=+\[]+[\:]?(\d*-\d*-\d* \d*:\d*:\d*|.*)/) {
                  print $1."\n";
      }

      然后是一个perl6的

      if $line ~~ /[ 
                      [\=]+\[(.*)\][\=]+     || 
                      [IP|Agent|URL|POST|COOKIE|ErrorCode|Result]\:(.*)
                  ]/ {
                      say $/;
      }                            
      2022-12-01 09:20 回答
    • log 文件过大,不建议用正则表达式,你可以通过按行读取、分割字符串的方式进行处理:

      PHP 代码:

      $fp = fopen('xx.log', 'r');
      
      while(!feof($fp)){
         $line = trim(fgets($fp));
         // 跳过空行
         if(!$line){
            continue;
         }
         // 以 ==== 字符串开头时
         if(strpos($line, '====') === 0){
            if($data){
               //处理上一条记录
            }
            $data = array();
         }
         // 分割字符串
         list($key, $value) = explode(':', $line, 2);
         // 写入到数组
         $data[$key] = trim($value);
      }
      
      fclose($fp);
      
      2022-12-01 09:20 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有