【php】改行を維持しつつhtmlspecialcharsでHTMLエンティティ化して出力する方法

php

テキストエリアなどに入力された文字をphpで出力する際、「<」や「>」などのhtmlタグに使われる特殊文字を「&lt;」や「&gt;」などブラウザ上で可読できる文字に変換(HTMLエンティティ化)するのにhtmlspecialchars関数が使われますが、同時に改行を維持したといったことはがあると思います。
そこで今回は、htmlspecialchars関数と、改行コードの前に<br>を挿入してくれる関数nl2brを併用してHTMLエンティティ化しつつ改行を維持する方法をご紹介します。

※nl2brを使った<br>の挿入方法についてはこちらをご確認ください。

htmlspecialcharsとnl2brを併用してHTMLエンティティ化+改行を実現する方法

html上出力結果

ブラウザー上出力結果

文中に<strong >htmlのコードを含む</strong>と同時に
改行を含む文字列

先にhtmlspecialcharsでHTMLエンティティ化された文字列をnl2b関数で出力することでHTMLエンティティ化しつつ改行有りの出力ができます。

順番が違うと改行が維持されず、<br>がHTMLエンティティ化されて出力されますのでご注意ください。