PHP でフォームを作ってて、textarea などで入力された内容を POST でスクリプトに送り、それを次の画面とかでプレビューしたい場合、

普通に echo $textarea_value; とかしても改行部分にスペースがあくだけでちゃんと表示できません。

var_dump でみてみるとちゃんと改行はされてるのになんでだろうと思ったのですが、これはフォームの中で改行した時に挿入される改行コード(\nとか)と、HTMLの改行コード(<br>)が異なるからっぽい。

なので、プレビュー表示するときにこの改行コードをもう一度HTMLの改行コードに変換すればいいんですが、PHPにはそれを1発でやってくれる関数がありました。

nl2br

nl2br関数は、

改行文字の前に HTML の改行タグを挿入する

というものです。

PHP: nl2br – Manual

つまり、さっきのコードにこれを噛ませて

というふうにしてあげればちゃんとプレビューでも改行された状態になります。

ちなみに第二引数を true にすると、XHTML に準拠した改行の入れ方がされるようになるんだそうです。(5.3.0以降)

掲示板とかメールフォームでプレビューしたい時とかに使えるかな?
他の使い道は…うーん。思いつかんです。

ですが今でも業務でフォームとか作ると確認ページとかを要求するパターンが多いので、フォームを自作する際はまだまだ使うことが多そうですね。

コメントする