Импорт данных текстового файла в php

0

Я новичок в 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"

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

Теги:
import
text-files

1 ответ

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
    Привет, как не исказить значение времени? пожалуйста :(
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню