こんにちは!エンジニアの大竹です!
今回は改行文字(コード)をbrタグに変換する便利なnl2br関数について解説します!
使い方自体はとても簡単です!
ただし、nl2brは使い方を間違えると正しく変換されないこともあるので注意が必要です!
この記事では、
・nl2brの基本的な使い方
・nl2brのオプションを用いた詳細な使い方
といった内容から
・nl2brの逆(brタグを改行コード)にする方法
・nl2brを使ったけど変換されなかった場合の対処法
までの内容を解説していきます!
nl2brを使ってみよう
使い方
まずは基本的な使い方を知りましょう!
といってもとても簡単です。
コードを見てみましょう!
<?php $message = "Melon\r\nBanana\r\nApple"; echo nl2br($message); ?>
実行結果:
Melon<br /> Banana<br /> Apple
このサンプルコードを見ていただいて分かる通り改行コード「\r\n」を「<br />」に変換するというとてもシンプルな関数です。
ちなみに改行コードが「\n」だった場合どうなるでしょうか?
こちらも次のサンプルをごらんください
<?php $message = "Melon\nBanana\nApple"; echo nl2br($message); ?>
実行結果:
Melon<br /> Banana<br /> Apple
こちらのケースも同じ結果になりました。
実行環境によって改行コードに違いがあったとしても同様に出力されます。
次の項では変換後のbrタグに関係するオプションについて解説します!
オプション
前項では改行コードが「<br />」に変換できました。
nl2brではbrタグの出力方法を選ぶことができます。
実際にサンプルコードを見てみましょう。
<?php $message = "Melon\nBanana\nApple"; echo nl2br($message ,false); ?>
Melon<br> Banana<br> Apple
前項のサンプルコードとの違いわかりますか?
変換されたbrタグが「<br />」ではなく「<br>」になっています。
何らかの理由で「<br />」ではなく「<br>」したい場合は第二引数のオプションにfalseを指定すると良いでしょう。
brタグを改行コードへ変換する
先程までは改行コードをbrタグに変換するnl2br関数についてご紹介しました。
では逆にbrタグを改行コードに変換するための関数はあるのでしょうか?
結論から言うとありませんが、次のようなサイトで解説されているような手法を使うことで実現することが可能です。
【PHP】本当のnl2brの逆関数
http://hi.seseragiseven.com/archives/559
nl2brを使ったのにbrタグに変換されない場合
nl2brは改行コードをbrタグに変換する関数ですが、ある使い方をすることで変換されなくなってしまいます。
まずは正しい使い方を見てみましょう。
<?php $message = "Melon\nBanana\nApple"; echo nl2br($message); ?>
実行結果:
Melon<br /> Banana<br /> Apple
これは一番最初の章で提示したサンプルです。
特におかしいところはありません。
では次に問題のあるサンプルを見てみましょう。
<?php $message = 'Melon\nBanana\nApple'; echo nl2br($message); ?>
実行結果:
Melon\nBanana\nApple
実行結果に違いがでていますよね!?
サンプルコードの違いを見ると大きく違いがないように感じるかもしれません。
しかし、先に紹介したコードはダブルクォーテーションで文字を囲っており2つ目のコードではシングルクォーテーションを囲っています。
シングルクォーテーションで文字を囲った場合は、改行コードが改行コードとして評価されないためこのような状態がおきます。
そのため、改行コードを取り扱うときにはこのシングルクォーテーションとダブルクォーテーションの違いをより意識して使い分ける必要があります。
まとめ
いかがだったでしょうか?
今回は簡単に使えるnl2br関数について紹介しました。
しかし、動作を正しく理解していないと思わぬところで不具合を出してしまう可能性もあり注意が必要です。
この記事の内容を忘れないようにしておきましょう!