2012-03-03 3 views
1

私は非常にphpに新しいです、私は検索し、テキストをcsvに変換してファイルに書き込むためにこのスクリプトをまとめる。ファイルに出力する

 $File = "/var/apache2/htdocs/loginS/host.txt"; 
     $Handle = fopen($File,"r"); 
     $Content = fread ($Handle,filesize ($File)); 
     fclose($File); 
     fclose($Handle); 
     $Content = explode("\t", $Content); 
     foreach($Content as $Value) { 
       //echo $Value."|"; // till this line working 
     fwrite($save, $Value); 
     fclose($save); 
     } 

問題はファイルに書き込もうとするときです。私は1行しか持っていません。私の誤りは何ですか?

答えて

3

レコードを書き込んでいるループ内のファイルに対して、fclose()を呼び出しています。 fclose()はファイルハンドルをクローズし、有効でなくなり、書き込めません。

}の後にfclose($save);に移動し、コンテンツをforeach()で終了します。

また、fread()としているので、$Content = file_get_contents($File);と呼ぶことで少し簡略化できます。また、$Fileは単なる文字列変数であるため、fclose()を呼び出す必要はなく、何もしません。 fclose()$Handleと呼んで、正しく閉じていました。しかし、file_get_contents()を使用すると、両方の必要性がなくなります。あなたが必要とする唯一のファイルはあなたが書いていたものです。

ファイルの各行を配列に読み込む関数file()を使用した例です。

$file = '/var/apache2/htdocs/loginS/host.txt'; 
$content = file($file); 

$save = fopen('./out.csv', 'w+'); 

foreach($content as $line) { 
    $line = rtrim($line, "\r\n"); // remove the newline from $line 
    $parts = explode("\t", $line); 

    $lineCsv = implode('|', $parts); // or ',' ? 
    fwrite($save, $lineCsv . "\n"); // write output to file 
} 

fclose($save); 
+0

ありがとうございます! – user1212143

関連する問題