2

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

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

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

4

2 回答 2

6

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

// Read TSV line using 'backspace' as the enclosure character
fgetcsv($stream, 0, "\t", chr(8));
于 2013-06-03T12:55:37.600 回答
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);
于 2013-06-03T12:48:35.573 回答