在php中使用制表符间隔文本文件

时间:2014-11-19 12:58:32

标签: php csv text-files

我正在读取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

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

2 个答案:

答案 0 :(得分:0)

我做了类似的事情,虽然它是另一种方式。我用逗号替换了标签。这是我使用的代码:

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

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

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

答案 1 :(得分:-1)

根据php manual

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

所以你可以试试

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