• 締切
  • 困ってます

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

  • 質問No.4026603
  • 閲覧数637
  • ありがとう数3
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 7% (1/13)

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 プラス改行のデータ
が代入されます。
この改行のデータを除くためにはどのようにすればよいですか?

初歩的な質問で申し訳ないのですが、よろしくお願いします。

回答 (全4件)

  • 回答No.4

ベストアンサー率 66% (93/140)

いかん。
コピペして$fp見てなかった。

<?php
$filename = 'list.csv';
$data = array_map("rtrim", file($filename));
?>

ですね。
CSVのデータを読みたいなら、そうですが・・・
読んだ行の改行を削除したいとの希望だと解釈しました。
  • 回答No.3

ベストアンサー率 51% (3827/7415)

っていうか、file()はファイルハンドルをつかわないですよ

きちんとやるならfgetcsvで読んでよるとよいと思います。
(ほんとにcsvデータなら)
  • 回答No.2

ベストアンサー率 66% (93/140)

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

で、どうでしょう?
  • 回答No.1

ベストアンサー率 54% (865/1590)

trim()を使えばいいのでは?どうせexplodeなどで切り出して使うので

  foreach ($data as $line) {
    $list($a, $b, $c) = explode(',', trim($line));
      :
      :
    }

などとして使ってます。

#書き込むときはPHP_EOLを足して・・ですね。
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ