2011-07-29 9 views
0

私はCSVファイルをタブ区切りに変更するスクリプトを使っています。それは素晴らしいと思われるが、それは読み取り専用です。実際にファイルに変更を書き込むにはどうすればいいですか?ここでのスクリプトは次のとおりです。PHPを使用してこれをファイルに書き込む方法はありますか?

<?php 
$myfile = "/path/to/my.csv"; 
$csv_fp = fopen ($myfile, "r"); 
$rows = 0; 
     while ($data = fGetCsv ($csv_fp, 10000, ",")) 
{ 
$num = count($data); 
for ($c=0; $c < $num; $c++) { 
    echo $data[$c] . "<br />\n"; 
     } 

$rows++; 
}fclose ($csv_fp); 
?> 
+0

'file_put_contents( '/ path/to/my.csv'、$ data)'についてはどうですか? – Shef

+0

fclose($ csv_fp)の前にfile_put_contents( '/ path/to/my.csv'、$ data)を置くだけですか? ? – Presto

+0

また、ここでコメントをコードとしてスタックオーバーフローでどのように書式設定しますか? – Presto

答えて

2

カンマ区切りのCSVをタブ区切りに変更する方法です。しかし、私はこれを行う利点を見ていない。私はカンマ区切りのCSVはエラーが発生しにくいと思う。

<?php 
$myfile = "/path/to/my.csv"; 
$csv_fread = fopen($myfile, 'r'); 

$rows = array(); 
while ($columns = fgetcsv($csv_fread, 10000, ",")) { 
    $rows[] = $columns; 
} 
fclose($csv_fread); 


$csv_fwrite = fopen($myfile, 'w'); 
foreach($rows as $row){ 
    fputcsv($csv_fwrite, $row, "\t"); 
} 
fclose($csv_fwrite); 
?> 
+0

コードサンプルありがとうございますが、 'fputcsv()は、パラメータ1がリソースであることを期待し、ブール値を与えられています' 'foreach($ rows as $ row){ fputcsv($ csv_fwrite、$行 "、" \ t "); }「それは何を意味するのですか? – Presto

+0

@Presto: '$ myfile'のファイルパスを変更しましたか? '$ csv_fwrite'が書き込みのためにファイルを開いていないようです。ファイルのパスを変更した場合は、ファイルのアクセス権に問題がある可能性があります。ファイルに対する書き込み権限がない可能性があります。 – Shef

+0

それはそれでした!私はファイルのパーミッションを変更し、それを通過することができました。今すぐ 'file_put_contents'をどのように使用して新しい' .txt'ファイルとして保存するのかを理解するだけです。もう一度、すべての助けをありがとう:) – Presto

0

あなたはrから書き込みモードでファイルを開き、1にfopenの通話モードを変更する必要があります。どちらを選択するかは、実行したいこと(追加、上書き)によって異なります。上書きしたいと思っています。この場合、wまたはw+を選択することができます。

fopenfwriteのマニュアルをご覧ください。

+0

ありがとう、私は試みたが、それはエラーで爆破した。可能であれば、この問題の修正としてこのスクリプトのコードサンプルをもっと探していたと思います。 – Presto

関連する問題