• ベストアンサー

explode時の改行コードでtrim以外の方法

aaa bbb ccc というテキストデータ(改行あり)を読み込み、explodeで配列に入れる操作を行ったのですが、cccのところで改行コードも代入されてしまいます。trimでとれたのですが、毎回このような事を行うのは汚く感じるのですが、他に方法はありませんでしょうか? よろしくお願いいたします。 <?php $data = file("./a.txt"); $aa = explode( " ", $data[0] ); echo strlen($aa[0])." "; echo strlen($aa[1])." "; echo strlen($aa[2])."<br>"; echo $aa[0]." "; echo $aa[1]." "; echo $aa[2]."<br>"; $ab=trim($aa[2]); echo strlen($ab)."<br>"; ?> 実行結果 3 3 5 aaa bbb ccc 3

質問者が選んだベストアンサー

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

このての定型データはfgetcsv()で読むと効率的 (csvデータで改行は区切り文字なので) <?php $handle = fopen("hoge.txt", "r"); while (($line = fgetcsv($handle, 1000, " ")) !== FALSE) { $data[]=$line; } fclose($handle); foreach($data as $line){ foreach($line as $val){ print $val."->".strlen($val)."<br>"; } } ?>

mackie01
質問者

お礼

できました!ありがとうございます。 というかfgetというとり方があったんですね。 もっと勉強します。

その他の回答 (2)

  • prorz
  • ベストアンサー率66% (2/3)
回答No.3

exploadeする前にtrimしたらどうですか? $data = file("./a.txt"); $data[0] = trim($data[0]); $aa = explode( " ", $data[0] );

mackie01
質問者

お礼

なぜ気付かなかったんだろう、というぐらいシンプルなやり方ですね。 助かりました。有難うございます。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

FILE_IGNORE_NEW_LINESを指定しては。

参考URL:
http://search.goo.ne.jp/web.jsp?MT=FILE_IGNORE_NEW_LINES
mackie01
質問者

補足

ご回答ありがとうございます。先の例に、 $data = file("./b.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); とすると、 3 3 4 aaa bbb ccc 3 となりました。ひとつは消えましたがまだ何かが残っているようですが、どうしてでしょうか。 度々すみません。

関連するQ&A

専門家に質問してみよう