- ベストアンサー
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
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
このての定型データは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>"; } } ?>
その他の回答 (2)
- prorz
- ベストアンサー率66% (2/3)
exploadeする前にtrimしたらどうですか? $data = file("./a.txt"); $data[0] = trim($data[0]); $aa = explode( " ", $data[0] );
お礼
なぜ気付かなかったんだろう、というぐらいシンプルなやり方ですね。 助かりました。有難うございます。
- osamuy
- ベストアンサー率42% (1231/2878)
FILE_IGNORE_NEW_LINESを指定しては。
補足
ご回答ありがとうございます。先の例に、 $data = file("./b.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); とすると、 3 3 4 aaa bbb ccc 3 となりました。ひとつは消えましたがまだ何かが残っているようですが、どうしてでしょうか。 度々すみません。
お礼
できました!ありがとうございます。 というかfgetというとり方があったんですね。 もっと勉強します。