Я читаю файл 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
Любая помощь будет оценена. Благодарю вас
Некоторое время назад я делал нечто подобное, хотя все было наоборот. Я заменил вкладки запятыми. Вот код, который я использовал:
preg_replace('/[ ]{2,}|[\t]/', ',', $string);
Приведенный выше код удалил две вкладки и заменил их одной запятой. Так что, возможно, попробуйте это так:
preg_replace(',', '/[ ]{1,}|[\t]/', $string);
Согласно Руководство по PHP
int fputcsv ( resource $handle , array $fields [, string $delimiter = "," [, string $enclosure = '"' ]] )
Так что вы можете попробовать
fputcsv($absaFile, $debitorders ,"\t");