Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 没有封闭字符时,如何使用fgetcsv?_Php_Csv_Fgetcsv - Fatal编程技术网

Php 没有封闭字符时,如何使用fgetcsv?

Php 没有封闭字符时,如何使用fgetcsv?,php,csv,fgetcsv,Php,Csv,Fgetcsv,我正在处理来自的csv文件,因此我需要在没有任何附件的情况下获取csv行 当前要求为$enclosure参数提供单个字符,如果不提供,则不会处理CSV数据 如何使用php本机功能检索没有外壳字符的csv数据?如前所述,最简单的方法是根本不使用fgetcsv()。您只需使用plain()函数读取CSV中的每一行,然后使用()创建每一行的所有不同字段的数组 下面是一个小例子: $handle = fopen("foo.csv", "r"); $i = 1; // for test output

我正在处理来自的csv文件,因此我需要在没有任何附件的情况下获取csv行

当前要求为
$enclosure
参数提供单个字符,如果不提供,则不会处理CSV数据


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

如前所述,最简单的方法是根本不使用fgetcsv()。您只需使用plain()函数读取CSV中的每一行,然后使用()创建每一行的所有不同字段的数组

下面是一个小例子:

$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);

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

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

只需逐行读取数据,然后自己将数据解析为所需格式。这不考虑fgetcsv提供的转义功能,可能会导致csv数据中使用分号的字符串格式错误。不过,对于大多数情况,这是一个可行的解决方案。函数名“char”中的输入错误应该是“chr”。