【问题标题】:Using tabs spacing in php for text file在 php 中为文本文件使用制表符间距
【发布时间】:2014-11-19 12:58:31
【问题描述】:

我正在读取一个 CSV 文件并将 CSV 文件中的数据打印到 2 个.txt 文件中。文本文件的输出如下

John
Georgina,Sinclair,408999703657,cheque,"First National Bank",Fourways,275.00,12/01/2012
Toby,Henderson,401255489873,cheque,"First National Bank",Edenvale,181.03,12/13/2012

这是我的代码:

    $file_handle = fopen("debitorders.csv", "r") or die("can't open debitorders.csv");
    $absaFile = fopen("ABSA.txt", "w") or die("can't open ABSA.txt");
    $firstNationalBankFile = fopen("First National Bank.txt", "w") or die("can't open First       National Bank.txt");  

    while (!feof($file_handle) ) {

        $debitorders = fgetcsv($file_handle, 1024, ",");

        if ($debitorders[4] == "ABSA"){
            print_r ($debitorders[4] . "<br />");
            fputcsv($absaFile, $debitorders);

            $ABSA_bank = "ABSA";
            fopen("ABSA.txt", "a");
            file_put_contents('ABSA.txt', $ABSA_bank, FILE_APPEND);
        }

        if ($debitorders[4] == "First National Bank"){
            $FNB_bank = "First National Bank";

            print_r ($debitorders[4] . "<br />");
            fputcsv($firstNationalBankFile, $debitorders);

            $FNB_bank = "First National Bank";
            fopen("First National Bank.txt", "a");
            file_put_contents('First National Bank.txt', $FNB_bank, FILE_APPEND);
        }
    }
    fclose($file_handle);
    fclose($absaFile);
    fclose($firstNationalBankFile);

如何在输出文件中放置制表符而不是逗号,以便输出看起来像这样:

John
GeorginaSinclair    408999703657  cheque  First National Bank  Fourways 275.0012/01/2012
TobyHenderson       401255489873  cheque  First National Bank  Edenvale 181.0312/13/2012

任何帮助将不胜感激。谢谢你

【问题讨论】:

标签: php csv text-files


【解决方案1】:

我不久前做过类似的事情,尽管情况正好相反。我用逗号替换了制表符。这是我使用的代码:

preg_replace('/[ ]{2,}|[\t]/', ',', $string);

上面的代码删除了两个标签并替换为一个逗号。所以也许可以这样尝试:

preg_replace(',', '/[ ]{1,}|[\t]/', $string);

【讨论】:

    【解决方案2】:

    根据php manual

    int fputcsv ( resource $handle , array $fields [, string $delimiter = "," [, string $enclosure = '"' ]] )
    

    所以你可以试试

     fputcsv($absaFile, $debitorders ,"\t");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      • 2012-06-18
      • 2023-03-10
      • 1970-01-01
      • 2014-06-05
      • 1970-01-01
      相关资源
      最近更新 更多