2016-08-07 10 views
0

タブ区切りの.txtファイルを.csvファイルに変換しようとしています。PHP - タブ区切りのTXTファイルをCSVに変換

私はtxtファイルを開き、次のコードを使用して、各ラインのデータを取得するために)(fgetcsvを使用することができました。今、私はちょうどデータ配列からcsvファイルを作成する必要が

$handle = fopen("fileurl.com", "r"); 
$row = 1; 
if (($handle = fopen("fileurl.com", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) { 
     $num = count($data); 
     echo "<p> $num fields in line $row: <br /></p>\n"; 
     $row++; 

     for ($c=0; $c < $num; $c++) { 
      echo $data[$c] . "<br />\n"; 
     } 

     print_r($data); 

    } 
    fclose($handle); 
} 

を。私はfputcsv()を使ってみましたが、何の幸運もありませんでした。私はこのような何かを試してみたが、それが作成するCSVファイルが正しくないとだけ1行があります。

$fp = fopen('file.csv', 'w'); 

fputcsv($fp, $data, "\t"); 

fclose($fp); 

$ data配列から.csvファイルを作成する方法の例としては、素晴らしいことだし。私は多くの時間を研究し、これを理解しようとしましたが、それを稼働させることができませんでした。

答えて

3

fputcsv()は、一度に1行ずつ書き込みます。ファイル全体ではありません。すべてのデータをCSVファイルに追加するには、$dataをループする必要があります。

$fp = fopen('file.csv', 'w'); 
foreach ($data as $line) { 
    fputcsv($fp, $line); 
} 
fclose($fp); 

あなたのコードを使用して完全な例:

$handle = fopen("fileurl.com", "r"); 
$lines = []; 
if (($handle = fopen("fileurl.com", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) { 
     $lines[] = $data; 
    } 
    fclose($handle); 
} 
$fp = fopen('file.csv', 'w'); 
foreach ($lines as $line) { 
    fputcsv($fp, $line); 
} 
fclose($fp); 
+0

答えをありがとう。私はこれを試して、次のエラーを取得します: 警告:fputcsv()は、配列、文​​字列が指定された文字列を期待します –

+0

あなたのコードを例として使用して私の答えを更新しました。あなたはこれを動作させるために必要な配列にデータを入れていませんでした。 –

+0

警告:この行のforeach()に無効な引数が指定されています$ fp = fopen( 'file.csv'、 'w'); –

0

これは、我々は配列として二番目のパラメータを使用しfputcsvでCSVファイル

<?php 

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'), 
    array('123', '456', '789'), 
    array('"aaa"', '"bbb"') 
); 

$fp = fopen('file.csv', 'w'); 

foreach ($list as $fields) { 
    fputcsv($fp, $fields); 
} 

fclose($fp); 
?> 

にデータを書き込むための正しい方法です。

関連する問題