Как разобрать «проблемный» CSV в PHP - PullRequest
0 голосов
/ 09 октября 2011

Мне нужно проанализировать «проблемный» CSV-файл, например:

some text here
other line of text, here
header1, header2, header3
value1, value2, value3  // data row #1
value1, value2, value3  // data row #2
(empty line)
(empty line)
some other text here

Конечно, меня интересуют только строки (value1, value2 и value3), которые на самом деле содержат ценные данные.Я попытался извлечь URL в строку, а затем вызвать str_getcsv (параметры по умолчанию), но я получаю массив, с которым трудно работать:

array
  0 => string 'some text here ' (length=50)
  1 => string ' other text here
other text here
header1 ' (length=50)
  2 => string 'header2' (length=13)
  3 => string 'header3' (length=14)
  4 => string 'header4' (length=14)
  5 => string '
value1' (length=2)
  6 => string 'value2' (length=1)
  7 => string 'value3' (length=1)
  8 => string 'value4

1 Ответ

1 голос
/ 09 октября 2011

Если эта структура фиксирована, то вы можете создать массив строк, а затем просто использовать 4-ю и 5-ю строку.

Попробуйте $file - переменная с содержимым, которое вы хотите проанализировать.

$lines = array();
foreach(preg_split("/(\r?\n)/", $file) as $line){
    $lines[] = $line;
}
$data_row1 = explode(',', $lines[3]);
$data_row1 = explode(',', $lines[4]);
...