如何通过解析大文件来创建数组?

时间:2018-04-26 09:44:57

标签: php arrays file parsing foreach

我的文件有很多这样的条目:

    18923081293801293.dateTime=12.10.2016 19\:46\:25
    18923081293801293.animal=cat
    18923081293801293.name=Fred
    18923081293801293.age=24
    67923781263804221.dateTime=15.04.2016 20\:26\:11
    67923781263804221.animal=horse
    67923781263804221.name=Larry
    67923781263804221.age=21
    ....

我正在解析文件......

 if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
    $file_path = $file['name'];
    $linesArray = file($file_path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    $properties = array();


    foreach ( $linesArray as $str) {
        if (strlen($str) && $str[0] == '#') {
            $pdate = substr($str, 1);
            $date = rtrim($pdate);
            $formatted = DateTime::createFromFormat('* M d H:i:s T Y',$date);
        }
        rtrim ($str, "\n");
        $exp = explode ('=', $str);
        if(count($exp) == 2){
            $exp2 = explode('.', $exp[0]);  
            if( count($exp2) == 2 ) {
                if($exp2[1] == "dateTime"){
                    $s = str_replace("\\","",$exp[1]);
                    $d = strtotime($s);
                    $dateTime = date('Y-m-d H:i:s', $d);
                    $properties [$exp2[0]][$exp2[1]] = $dateTime;
                } else {
                    $properties [$exp2[0]][$exp2[1]] = $exp[1];
                }
            } else {
                $properties [$exp[0]] = $exp[1];
            }
        } 
    }
}

...并创建一个数组:

var_dump($properties);

array(5) {
  ["18923081293801293"]=>
  array(5) {
    ["dateTime"]=>
    string(19) "2016-10-12 19:46:25"
    ["animal"]=>
    string(3) "cat"
    ["name"]=>
    string(4) "fred"
    ["age"]=>
    string(2) "24"
  }
.... and so on
}

这通常很有效。但是现在我有一个包含大量条目的非常大的文件,并且没有创建数组。结果是一个空白页面。我该怎么办?

0 个答案:

没有答案