2015-03-07 6 views
0

Я новичок в php-кодировании. Итак, вот моя проблема: мне нужно получить данные в текстовом файле. У меня есть текстовый файл, например, когда данные, как это:Импорт текстовых файлов в php

Return(result="success" dev_id="6714114030000088" total="14" 

time="2015-02-11 11:35:20" id="505" name="DIM" workcode="0" status="0" authority="0X11" card_src="from_check" 

time="2015-02-11 11:42:47" id="505" name="DIM" workcode="0" status="0" authority="0X11" card_src="from_check" 

Так что я должен получить данные в кавычках в зависимости от его категории, как имя, время, статус и т.д.

ответ

1

Вам может понадобиться немного изменить поле даты. Простой парсер:

$aFile = file('infile.txt'); 

$iCountLines = count($aFile); 

$aData = array(); 

for($i = 0; $i < $iCountLines; ++$i) 
{ 
    // Skip empty lines. 
    if(empty(trim($aFile[ $i ]))) 
    { 
     continue; 
    } 

    // Skip header line. Can extend to skip unnecessary lines. 
    if(strpos($aFile[ $i ], 'Return(result') !== FALSE) 
    { 
     continue; 
    } 
    // Separate based on space. Time values will be distorted. 
    $aRaw = explode(' ', $aFile[ $i ]); 
    $iCountRaw = count($aRaw); 

    // Reset temp data. 
    $aTmp = array(); 
    for($j = 0; $j < $iCountRaw; ++$j) 
    { 
     $aTmpRaw = explode('=', $aRaw[ $j ]); 

     // Time exclusion 
     if(!empty($aTmpRaw[ 1 ])) 
     { 
      $aTmp[ $aTmpRaw[ 0 ] ] = $aTmpRaw[ 1 ]; 
     } 
    } 
    $aData[] = $aTmp; 
} 
var_dump($aData); 

Время хак:

<?php 
    $aFile = file('infile.txt'); 

    $iCountLines = count($aFile); 

    $aData = array(); 

    for($i = 0; $i < $iCountLines; ++$i) 
    { 
     // Skip empty lines. 
     if(empty(trim($aFile[ $i ]))) 
     { 
      continue; 
     } 

     // Skip header line. Can extend to skip unnecessary lines. 
     if(strpos($aFile[ $i ], 'Return(result') !== FALSE) 
     { 
      continue; 
     } 
     // Separate based on space. Time values will be distorted. 
     $aRaw = explode(' ', $aFile[ $i ]); 

     // Re-connect time values. 
     $sTmp = $aRaw[ 0 ]; 
     $sTmp2 = $aRaw[ 1 ]; 
     unset($aRaw[ 0 ]); 
     unset($aRaw[ 1 ]); 
     $aRaw[ 0 ] = $sTmp . $sTmp2; 
     $aRaw = array_values($aRaw); 
     $iCountRaw = count($aRaw); 

     // Reset temp data. 
     $aTmp = array(); 
     for($j = 0; $j < $iCountRaw; ++$j) 
     { 
      $aTmpRaw = explode('=', $aRaw[ $j ]); 

      // Time exclusion 
      if(!empty($aTmpRaw[ 1 ])) 
      { 
       $aTmp[ $aTmpRaw[ 0 ] ] = $aTmpRaw[ 1 ]; 
      } 
     } 
     $aData[] = $aTmp; 
    } 
    var_dump($aData); 
?> 
+0

Огромное вам спасибо г-н Владимир! Я пытался решить это много раз, но все равно не смог. * крики –

+0

Привет, как не искажать значение времени? пожалуйста :( –

+0

Повторное подключение. Не самое чистое исправление. –

Смежные вопросы