• 締切済み

PHPで外部ファイルを読み込むときの行の最後の改行の消し方について

PHPについての質問です。 初歩的な質問ですがどうかお付き合いいただけたらと思います。 PHPで外部ファイルを読み込む際、csvファイルなどを1行ずつ読み込んだ場合、行の最後の改行まで代入されます。 例えば ////test.php/////////////// <?php $filename = list.csv; $fp = @fopen($filename,"r"); $data = @file($filename); @fclose($fp); ?> //////////////////////////// ////list.csv//////////////// 1,2,3,4,5 6,7,8,9,10 //////////////////////////// とする場合 $data[0]には 1,2,3,4,5 プラス改行のデータ $data[1]には 6,7,8,9,10 プラス改行のデータ が代入されます。 この改行のデータを除くためにはどのようにすればよいですか? 初歩的な質問で申し訳ないのですが、よろしくお願いします。

みんなの回答

  • masa6272
  • ベストアンサー率66% (93/140)
回答No.4

いかん。 コピペして$fp見てなかった。 <?php $filename = 'list.csv'; $data = array_map("rtrim", file($filename)); ?> ですね。 CSVのデータを読みたいなら、そうですが・・・ 読んだ行の改行を削除したいとの希望だと解釈しました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

っていうか、file()はファイルハンドルをつかわないですよ きちんとやるならfgetcsvで読んでよるとよいと思います。 (ほんとにcsvデータなら)

  • masa6272
  • ベストアンサー率66% (93/140)
回答No.2

<?php $filename = 'list.csv'; $fp = @fopen($filename,"r"); $data = array_map("rtrim", file($filename)); @fclose($fp); ?> で、どうでしょう?

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

trim()を使えばいいのでは?どうせexplodeなどで切り出して使うので   foreach ($data as $line) {     $list($a, $b, $c) = explode(',', trim($line));       :       :     } などとして使ってます。 #書き込むときはPHP_EOLを足して・・ですね。

関連するQ&A