• ベストアンサー

ログデータの改行を非表示に

自分のメモ用に、簡単な掲示板を作りました。 ログデータだけを見た時、見やすいよう(長文なので)に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)で試しても 改行だけの行も表示されてしまうのですが・・・ 改行だけの行は表示しないようにするにはどのように記述すればよいのでしょうか?? ご教授よろしくお願いします。

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

  • ベストアンサー
  • Suzi
  • ベストアンサー率38% (130/334)
回答No.2

 右端の改行を取るのでしたら、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つ続いているのではないでしょうか?

oosaka2000
質問者

お礼

1文ごとに\nは2つ入れてます。 教えていただいたようにしたらできました!ありがとうございました。

その他の回答 (2)

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

改行が入っていればemptyではないですよね こんな感じで <? $log = file("log.txt"); foreach($log as $val){ $val=str_replace(Array("\n","\r"),"",$val); if(!empty($val)){ echo "{$val}<br>"; } } ?>

oosaka2000
質問者

お礼

>改行が入っていればemptyではないですよね 勘違いしてました・・・ それでemptyでも表示されていたんですね。ありがとうございました。

  • splwtr
  • ベストアンサー率16% (75/461)
回答No.1

<br>は、どんな意味ですか? 自分で改行してるからでしょう。 折角 emptyって確認してるのに、確認が足りないです。

oosaka2000
質問者

補足

<br>をつけなかったら 11月11日、支払なんちゃらかんちゃら~ 11月12日、会議なんちゃらかんちゃら~ 11月23日、休みなんちゃらかんちゃら~ と表示されるので<br>で改行させています。 改行だけの行を、emptyで確認しても空白ではないとされてしまいます・・・

関連するQ&A