• 締切済み

【PHP】CSVファイルの特定行を書き出す

PHPでCSVファイルを読み込み、特定行のみを別のCSVファイルに書き出したいと思います。 作りたいものは、 http://example.com/file.php?repert=5 とすると、「002.csvファイルの5行目のみ」を「003.csv」に書き込むというものです。 下記で作りましたが、 Parse error: syntax error, unexpected end of file in C:\xampp\htdocs\file.php on line 32 になります。 指摘された32行は ?> の行です。 ググると改行コードのトラブルのようでしたのでCR+LF CR LF と試しましたが、改善されません。 どこが不味いかご教示戴けませんでしょうか? 宜しくお願い致します。 <?php $repeat = $_GET['repert']; $inFile = '002.csv'; // 抽出元ファイル $outFile = '003.csv'; // 結果ファイル $inFp = fopen($inFile, 'rb'); $outFp = fopen($outFile, 'w'); while ($data = fgetcsv($fp, 10000)) { if ($count == $repeat) { { $outLineArray = array( 0 => $data[0], 1 => $data[1], 2 => $data[2] ); fputs($outFp, implode(",", $outLineArray) . ""); } } fclose($inFp); fclose($outFp); exit(); ?>

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

#質問のエラーは改善されたようですが、気になったので・・・ せっかく読込み時はfgetcsvで取得しているのに、何故書き込みはfputs+implodeという旧式の(というか正しくCSVを扱えない)手法を採っているんでしょうか? fgetcsv($fp); で取得した配列データ($data)を『そのまま』fputcsvに渡せばいいと思います。 あと・・。変数$countは初期値も設定してなければカウントアップもしていませんよね?未来永劫、$count == $repeat が真になることはありません。

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.1

書かれているプログラムの9行目に不要な { が入っています。

tajix14
質問者

お礼

有難うございます。 動きました。だた、抽出がうまくいきません。 もう少し対応してみて動かなかったら再質問したいと思います。 有難うございました。

関連するQ&A