用 PHP 读取制表符分隔的 csv

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


实际上我有点困惑,当我使用谷歌时这个问题并不常见,所以也许我是问题所在......


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


aluckdog
浏览 321回答 2
2回答

繁星coding

您应该使用已经具有读取 tsv 功能的fgetcsv 函数。像这样:$uploadData = [];if (($handle = fopen("test.csv", "r")) !== false) {    while (($data = fgetcsv($handle, 0, "\t")) !== false) {        $uploadData[] = $data;    }    fclose($handle);}如果要将 tsv 转换为 csv,可以使用反函数fputcsv:$fh = fopen('file.csv');foreach ($uploadData as $datum) {    fputcsv($fh, $datum);}fclose($fh);如果您想自动检测 csv 分隔符,也许本文可以帮助您。

梦里花落0921

在 PHP 中读取 CSV 文件时,最好使用fgetcsv函数。有了它,您可以指定文件的分隔符。该函数将输出文件的一行。你的分隔符应该是"\t".
打开App,查看更多内容
随时随地看视频慕课网APP