为了账号安全,请及时绑定邮箱和手机立即绑定

用 PHP 读取制表符分隔的 csv

用 PHP 读取制表符分隔的 csv

PHP
aluckdog 2021-08-28 09:22:05
我无法使用 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
查看完整描述

2 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

您应该使用已经具有读取 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 分隔符,也许本文可以帮助您。


查看完整回答
反对 回复 2021-08-28
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

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


查看完整回答
反对 回复 2021-08-28
  • 2 回答
  • 0 关注
  • 320 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信