- ベストアンサー
ログデータの改行を非表示に
自分のメモ用に、簡単な掲示板を作りました。 ログデータだけを見た時、見やすいよう(長文なので)に1文ずつに改行を入れています。 -----ログデータの例(1文ごとに\nで改行)-------- 11月11日、支払なんちゃらかんちゃら~ 11月12日、会議なんちゃらかんちゃら~ 11月23日、休みなんちゃらかんちゃら~ ---------------------------------------- これを以下のように表示させたく -----表示------------------ 11月11日、支払なんちゃらかんちゃら~ 11月12日、会議なんちゃらかんちゃら~ 11月23日、休みなんちゃらかんちゃら~ --------------------------- その表示部分のプログラムは $log = file("log.txt"); foreach($log as $val){ if(!empty($val)){ echo "{$val}<br>"; } } と記述しているのですが、改行だけの行も表示されてしまいます。 if文を、!emptyの他に、$val!==nullや、isset($val)で試しても 改行だけの行も表示されてしまうのですが・・・ 改行だけの行は表示しないようにするにはどのように記述すればよいのでしょうか?? ご教授よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
右端の改行を取るのでしたら、rtrim で、 echo rtrim($val). "<br>"; または、改行と<br>を交換して、 $val = str_replace("\n", '<br>', $val); echo "{$val}<br>"; とかで工夫してみてはどうでしょうか(確認していません)。 ただ、log.txtのログデータの例ですが、もし \n で改行されているだけでしたら、ログデーターは、 11月11日、支払なんちゃらかんちゃら~ 11月12日、会議なんちゃらかんちゃら~ 11月23日、休みなんちゃらかんちゃら~ という風に表示されると思います。 11月11日、支払なんちゃらかんちゃら~ 11月12日、会議なんちゃらかんちゃら~ 11月23日、休みなんちゃらかんちゃら~ というのは、改行が2つ続いているのではないでしょうか?
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
改行が入っていればemptyではないですよね こんな感じで <? $log = file("log.txt"); foreach($log as $val){ $val=str_replace(Array("\n","\r"),"",$val); if(!empty($val)){ echo "{$val}<br>"; } } ?>
お礼
>改行が入っていればemptyではないですよね 勘違いしてました・・・ それでemptyでも表示されていたんですね。ありがとうございました。
- splwtr
- ベストアンサー率16% (75/461)
<br>は、どんな意味ですか? 自分で改行してるからでしょう。 折角 emptyって確認してるのに、確認が足りないです。
補足
<br>をつけなかったら 11月11日、支払なんちゃらかんちゃら~ 11月12日、会議なんちゃらかんちゃら~ 11月23日、休みなんちゃらかんちゃら~ と表示されるので<br>で改行させています。 改行だけの行を、emptyで確認しても空白ではないとされてしまいます・・・
お礼
1文ごとに\nは2つ入れてます。 教えていただいたようにしたらできました!ありがとうございました。