使用PHP读取制表符分隔的csv

时间:2019-06-18 13:58:34

标签: php html csv tabulator

我无法使用php读取制表符分隔的csv文件(是的,我知道它的csv和no tsv,并且c用于制表符...),并将其正确分隔。当我用echo或readfile给出导入的数据时,所有制表符都被空格代替,并且我不能使用空格作为分隔符。

实际上,我对使用Google时这个问题不是很普遍感到有些困惑,所以也许是我的问题...

XAMPP v3.2.3和PHP版本7.3.5存在问题

$tempFile = fopen($tempFilePath, "r");
        $uploadData = fread($tempFile, filesize($tempFilePath));
        fclose($tempFile);

        echo $uploadData;


        $uploadData =   str_replace('"','',$uploadData);    
        $uploadData = str_replace('\r\n','\n',$uploadData);
        $uploadData = str_replace('\r','\n',$uploadData);
        $uploadData = str_replace(';',',',$uploadData);
        $uploadData = str_replace('\t',',',$uploadData); //Here i'm trying to replace the tabulator with a colon to work with it afterwards

2 个答案:

答案 0 :(得分:0)

在PHP中读取CSV文件时,最好使用fgetcsv函数。使用它可以指定文件的分隔符。该函数将输出文件的一行。您的决定者应为"\t"

答案 1 :(得分:0)

您应该使用fgetcsv function,该功能已经具有读取tsv的功能。

赞:

thenApply(Function<? super T, ? extends U> fn) 
handle(BiFunction<? super T, Throwable, ? extends U> fn) 

如果要将tsv转换为csv,可以使用反函数fputcsv

$uploadData = [];
if (($handle = fopen("test.csv", "r")) !== false) {
    while (($data = fgetcsv($handle, 0, "\t")) !== false) {
        $uploadData[] = $data;
    }
    fclose($handle);
}

如果您想自动检测csv分隔符,也许this article可以为您提供帮助。