如何在PHP中解析“有问题”的CSV

时间:2011-10-09 14:25:03

标签: php arrays csv fgetcsv

我要像这样解析一个“有问题”的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 个答案:

答案 0 :(得分:1)

如果该结构是固定的,那么你可以创建一个行数组,然后只使用第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]);