if文で改行記号を判別したい
掲示板のようなものを作っています。
ログデータに記号で区切りを入れたデータがあります。
1,タイトル,名前,記事,yyyy-mm-dd,pic1,pic2,pic3
のような感じです。
記事を表示させるときに、ログファイルを一行ずつ読み込み、記号「,」でexplodeさせ、記事を表示させています。
上記のpic1,2,3にデータがあれば、画像を表示させるようにしています。
if($buff[5]){
print "<img src=pic1.jpg>";
}
で、このときにpic3が、行の終りなので改行記号が認識されてしまうようで、データがなくてもあるものとして扱われてしまいます。
例えば
2,タイトル,名前,記事,yyyy-mm-dd,pic1,,
1,タイトル,名前,記事,yyyy-mm-dd,pic1,pic2,pic3
というログを1行ずつ読み、処理したとき、
$buff=explode(",", $logdata);
if($buff[7]){
print "<img src=pic1.jpg>";
}
上のデータは配列の7番目に何もないはずなのに、print文が実行されてしまいます。
7番目には改行コードが入っていると思うのですが、if文の部分を
if(!$buff[7]=="\r\n")(Windowsで実行してるので)
としても
if(!$buff[7]==\r\n)(エラーになりました)
としても
if(strlen($buff[7]))(strlenで長さを見ると1になっています)
としても改行コードを拾うことができませんでした。
最後にもう一個「,」を足して、配列の8番目を捨てればいいだけなのですが、今後のために知っておきたいと思っています。
ご教授よろしくお願い致します。
お礼
お返事ありがとうございます。 なるほど。関数などもひとつにしてしまうということですね。 その発想自体が抜けていました。 ありがとうございました。