首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PHP读取分离的制表器csv

用PHP读取分离的制表器csv
EN

Stack Overflow用户
提问于 2019-06-18 21:58:34
回答 2查看 75关注 0票数 0

我无法读取制表器分离的csv文件(是的,我知道它的csv,没有tsv,c表示制表器...)与php和分离它的权利。当我使用echo或readfile给出我导入的数据时,所有的制表器都被一个空格取代,我不能将空格用作空格。

实际上我有点困惑,当我使用Google时,这个问题并不是很常见,所以可能是我出了问题……

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

代码语言:javascript
复制
$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
EN

回答 2

Stack Overflow用户

发布于 2019-06-18 22:09:23

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

票数 0
EN

Stack Overflow用户

发布于 2019-06-18 22:16:24

你应该使用已经有功能的fgetcsv function来读取tsv。

如下所示:

代码语言:javascript
复制
$uploadData = [];
if (($handle = fopen("test.csv", "r")) !== false) {
    while (($data = fgetcsv($handle, 0, "\t")) !== false) {
        $uploadData[] = $data;
    }
    fclose($handle);
}

如果你想把tsv转换成csv,你可以使用反函数fputcsv

代码语言:javascript
复制
$fh = fopen('file.csv');
foreach ($uploadData as $datum) {
    fputcsv($fh, $datum);
}
fclose($fh);

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56650883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档