如果没有机箱字符,你如何使用fgetcsv?

时间:2013-06-03 12:39:02

标签: php csv fgetcsv

我正在处理来自geonames.org的csv文件,因此我需要获取没有任何附件的csv行。

目前fgetcsv()要求您为$enclosure参数提供单个字符,如果不这样做,则不会处理CSV数据。

如何使用php本机功能检索没有外壳字符的csv数据?

2 个答案:

答案 0 :(得分:5)

作为一种可能的解决方法,您可以使用奇数字符作为附件:

// Read TSV line using 'backspace' as the enclosure character
fgetcsv($stream, 0, "\t", chr(8));

答案 1 :(得分:2)

如前所述,最简单的方法就是不要使用fgetcsv()。您可以使用普通fgets()函数从CSV中读取每一行,然后使用explode()创建每行所有不同字段的数组

这是一个小例子:

$handle = fopen("foo.csv", "r");

$i = 1;  // for test output

while (($buffer = fgets($handle)) !== false) {
    $fields = explode(";", $buffer);  // assuming that fields are separated with semicolons

    $j = 1;

    // Test output
    echo "Line $i: ";
    // This is just for show, you can use a regular for loop instead
    foreach ($fields as $field) {
        echo "Field $j: $field";
        $j++;
    }

    echo "\n";
    $i++;
}

fclose($handle);