分析日志文件不宜使用正则表达式(效率太低)$fn = 'sys.log';
$fp = fopen($fn, 'r');
while(! feof($fp)) {
  $r[] = fscanf($fp, "%s %s %s %s my: %s %s %s\n");
}
print_r($r);Array
(
    [0] => Array
        (
            [0] => Dec
            [1] => 30
            [2] => 15:10:48
            [3] => root
            [4] => 192.168.1.51
            [5] => test
            [6] => 退出邮件管理系统
        )    [1] => Array
        (
            [0] => Dec
            [1] => 30
            [2] => 15:11:23
            [3] => root
            [4] => 192.168.1.51
            [5] => stella
            [6] => 退出邮件管理系统
        ))

解决方案 »

  1.   

    fscanf($fp, "%s %s %s %s my: %s %s %s\n");
    是不是只要有一行的格式和规定的不相符,就为空呢?
    如:
    Dec 30 15:10:48 root my: 192.168.1.51 test 退出邮件管理系统
    Dec 30 15:11:23 root my: 192.168.1.51  退出邮件管理系统会得到:
    Array
    (
        [0] => Array
            (
                [0] => Dec
                [1] => 30
                [2] => 15:10:48
                [3] => root
                [4] => 
                [5] => 
                [6] => 
            )    [1] => Array
            (
                [0] => Dec
                [1] => 30
                [2] => 15:11:23
                [3] => root
                [4] => 
                [5] => 
                [6] => 
            ))