2010-09-02 80 views
0

我写了我的网站一个简单的日志文件,该文件是采用以下格式:sscanf读取自定义简单日志格式?

TIME: "..." IP: "..." HOST: "..." UA: "..." 

,并希望通过它的sscanf解析作为演习的一部分。我的代码是大致是这样的,这是对日志的每一行运行:

list($time, $ip, $host, $ua) = sscanf("TIME: %s IP: %s HOST: %s UA: %s", $line); 

当然,这是PHP,但它是不相关的,现在我以为这会工作,但它只是不分析什么。我现在知道,由于用户代理或时间包含空格而导致混乱,所以它不起作用。

我对sscanf格式知之甚少,但为了简单起见,希望使用它,是否有方法将引号作为单个实体读取(而不是简单地使用%s),因此它可以正常工作?

我用类似的格式得到了很多日志,所以如果我能够让这个例子工作的话,这会非常有用。谢谢!

回答

0

我想我只是使用正则表达式,如"(?:[^\\"]+|\\.)*"来完成它。