php - 解析文本文件以创建有用的日志文件

标签 php parsing ubuntu

在 ubuntu 10.04 服务器上,我有一个来自 php 的 30mb 日志文件。

不幸的是,日志如下所示:

...)
Array
(
    [calid] => 3114
    [email] => somemail@hotmail.com
    [firstname] => John
    [lastname] => Smith
    [address] => Lorem ipsum.
    [city] => Lorem
    [postcode] => 1345
    [date] => 01-12-2013
)
Array
(
    [calid] => 3111
    [firstname] => Lisa
    [lastname] => Smith
    [address] => Lorem ipsum.
    [city] => Lorem
    [postcode] => 4110
    [email] => somemail@gmail.com
    [phone] => 12345678
    [age] => 24
    [gender] => female
    [customer] => true
    [terms] => true
    [newsletter] => true
    [date] => 01-12-2013
)
Array
(...

我怎样才能把它解析成更有用的东西?一个csv会很好。

最佳答案

一个可能会有所帮助的原始想法:

$log = fopen('yourlogfile.log', 'r');

$data = array();
$key = 0;

while (!feof($log)) 
{
    $line = fgets($log);

    if(false !== strpos($line, 'Array'))
    {
        $key++;
        $data[$key] = array();
    }

    $pattern = '/\[(.*?)\] => (.+)/';
    preg_match_all($pattern, $line, $matches);

    if(!empty($matches[0]))
    {
        $data[$key][$matches[1][0]] = $matches[2][0];
    }
}
fclose($log);

// var_dump($log);

$csv = fopen('yourtarget.csv', 'w+');

for( $i = 1; $i <= count($data); $i++) 
{
    fputcsv($csv, $data[$i]);
}
fclose($csv);

关于php - 解析文本文件以创建有用的日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20325492/

相关文章:

php - 如何知道当前在 Ubuntu 16.04 中运行的是哪个 PHP 脚本?

ubuntu - kubeadm kubedns 错误。无法访问外部网络或其他 pod

ubuntu - 将 OpenCL.so 库添加到 makefile,我收到错误 "undefined reference to"

javascript - 如何修复 wp super 缓存错误消息?

php - 是否可以使用 jQuery 来确定行高?

JavaMail 问题或错误?

java - Jsoup:提取内部标签

PHPUnit 和 PHPStorm ... ResultPrinter.php 错误

php - 我有一个 Apache + PHP 服务器,可以上传代码。我可以使用 PHP 以外的语言进行服务器端编码吗?

java - 使用简单的 JSON 解析器 java 访问数组