忽略CSV列

时间:2013-06-09 12:43:12

标签: php

嗨,由于某种原因,我的以下代码无效:

if (($handle = fopen('https://www.national-lottery.co.uk/player/euromillions/results/downloadResultsCSV.ftl', 'r')) === false) {
    die('Error opening file');
}
$headers = fgetcsv($handle, 1024, ',');
$complete = array();

while ($row = fgetcsv($handle, 1024, ',', "'")) {
    $complete[] = array_combine($headers, $row);
        ++$row;
}
fclose($handle);

我认为它与CSV文件中的数据有关(Raffle中的引号是?) - 有没有办法可以忽略此列Raffle?

3 个答案:

答案 0 :(得分:2)

由于文件开头有空行,

$headers未正确填充。尝试以下操作,它会读取多行直到它到达标题:

if (($handle = fopen('https://www.national-lottery.co.uk/player/euromillions/results/downloadResultsCSV.ftl', 'r')) === false) {
    die('Error opening file');
}
do {
    $headers = fgetcsv($handle, 1024);
} while (is_array($headers) && count($headers) != 9);
$complete = array();

while ($row = fgetcsv($handle, 1024)) {
    $complete[] = array_combine($headers, $row);
    ++$row;
}
fclose($handle);

答案 1 :(得分:0)

此CSV文件的附件是“不是”

答案 2 :(得分:0)

您将单引号定义为机箱,但源文件没有机箱:

基于:

$row = fgetcsv($handle, 1024, ',', "'")

PHP希望您的数据采用以下格式:

'07-Jun-2013','14','26','45','50','7','2','7','LSH166797'

但文件采用以下格式:

07-Jun-2013,14,26,45,50,7,2,7,LSH166797

您的代码中可能存在其他问题,我没有深入挖掘。

为了避免麻烦,你可以使用fgets和explode()每一行。