テキストエリアなどに入力された文字をphpで出力する際、「<」や「>」などのhtmlタグに使われる特殊文字を「<」や「>」などブラウザ上で可読できる文字に変換(HTMLエンティティ化)するのにhtmlspecialchars関数が使われますが、同時に改行を維持したといったことはがあると思います。
そこで今回は、htmlspecialchars関数と、改行コードの前に<br>を挿入してくれる関数nl2brを併用してHTMLエンティティ化しつつ改行を維持する方法をご紹介します。
※nl2brを使った<br>の挿入方法についてはこちらをご確認ください。
htmlspecialcharsとnl2brを併用してHTMLエンティティ化+改行を実現する方法
1 2 3 4 5 |
<?php $example = “文中に<strong>htmlのコードを含む</strong>と同時に\n改行を含む文字列”; echo nl2br(htmlspecialchars($example)); ?> |
html上出力結果
1 2 |
文中に<strong>htmlのコードを含む</strong>と同時に<br> 改行を含む文字列 |
ブラウザー上出力結果
文中に<strong >htmlのコードを含む</strong>と同時に
改行を含む文字列
改行を含む文字列
先にhtmlspecialcharsでHTMLエンティティ化された文字列をnl2b関数で出力することでHTMLエンティティ化しつつ改行有りの出力ができます。
順番が違うと改行が維持されず、<br>がHTMLエンティティ化されて出力されますのでご注意ください。