1

所以我有这个脚本可以解析文件并将数据插入我的数据库。但是现在我正在查看的文件在我需要的东西之前有一堆随机文本(基本上是日志其余部分的关键)。所以我需要在文件中找到时间戳,然后像往常一样从那里操作,忽略时间戳之前的所有内容。日志看起来像这样-

(Blah blah, random stuff)

'2004-05-12 15:45:00',0,0,0,141713,,123.288,122.449,123.2...

这是我的代码,一旦我“点击”时间戳,将值存储在数组中 -

// read and store the values in an array
while (($buffer = gzgets($fp, 8192)) !== false)
        {
        $val[$i] = $buffer;
        $i++;
    }
    $qry = "insert into afeed 

    set time_stamp='".$val[0]."', 
    error_value='".$val[1]."',
    firstThing='".$val[2]."',
    ...
    otherstuff='".$val[12]."',
    lastThing='".$val[13]."'";

}

所以要么寻找时间戳并从那里开始,或者我在想,因为每次我能找出它的大小并“跳过那么多字节”时,所有无用的东西都是一样的?

这有可能吗?

4

1 回答 1

0

您的两种潜在解决方案都是可能的。“跳过那么多字节”的解决方案可能是最直接的。如果您提前知道无用内容的长度将是,例如,每个文件开头的 64 个字节,您可以使用类似gzseek($fp, 64)将文件指针移过无用内容的方法。

既然你说没用的东西每次都是一样的,这应该行得通。如果无用的东西不是预定的长度,一旦你确定了无用的东西有多长,这个方法仍然可以使用(我需要看看无用的东西是什么来决定最好的方法)。

于 2012-07-06T17:11:53.120 回答