2014-10-08 4 views
0

У меня есть текстовый файл, имеющий следующий формат

Чтение содержимого из текстового файла в PHP?

00151422 N8X 3V6 2013-11-11 00:19:00.000 IN   [email protected]     E  200-2462 Howard Avenue  Windsor ON CAN N8X3V6 M Dr. Patrick Soong 

00331448 T6E 2R1 2010-03-01 00:00:00.000 IN   [email protected]     E  9743 88 Ave NW  Edmonton AB CAN T6E2R1  Alina Tirlea Engstrom 

00364578 K7N 1A3 2011-01-12 00:00:00.000 IN        E  4463 Bath Rd  Amherstview ON CAN K7N1A3 M Mr. Martin Kandler 



выше позиционная текстовый файл содержит 3 записи и 20 полей в каждой записи. Также я теперь размер для каждого столбца. Как я буду читать записи и поля в записи с помощью PHP?

Размер полей

f1 = 8; 2 = 10; f3 = 10; f4 = 10; f5 = 255; f6 = 50; f7 = 255; f8 = 10; f9 = 10; f10 = 50; F11 = 50; f12 = 1; F13 = 20; F14 = 50; F15 = 50; F16 = 60; F17 = 10; F18 = 20; F19 = 20; F20 = 1;

+1

Почему бы просто не «взорвать» его и повторить? – Sal00m

+0

У нас нет разделителя в файле. –

+0

Поля не ограничены закладками? Это не так, вы должны попросить своего провайдера отправить вам файл CSV, разделенный запятой или вкладками ... или что-то еще, иначе вам нужно проанализировать его с помощью 'substr' – Sal00m

ответ

-1

Спасибо sal00m, наконец, получил ответ - Explode using tab.

+0

Итак, столбцы были разделены табуляцией, а также фиксированной шириной? Пожалуйста, обновите вопрос с этой информацией и примите свой ответ. –

2

Используйте substr() внутри какой-либо петли. Непроверенный, но должен дать вам идею:

$lengths = [8,10,10]; // define all the lengths 

function fixed_width_data_to_array($data, $lengths) { 

    foreach($rows as $row) { 

     $position = 0; // start at the beginning of the row 

     foreach($lengths as $length) { 

      // add current field to array 
      $my_data[] = trim(substr($row, $position, $length)); 

      // move the 'pointer' to the start of the next field 
      $position += $length; 
     } 

     // add current row to an array 
     $my_array[] = $my_data; 

    } 

    return $my_array; 

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