━目次━
今日はPHPです。
たまにこんな要件がでてきたりします。
改行コードを<br>タグに変換したい!
<br>タグを改行コードに変換したい!
さらっと解決しちゃいましょう
改行コードを<br>タグに変換する関数nl2br
PHPで改行コードを<br>タグに変換する場合は、nl2brという関数を使用します。
厳密には改行コードの前に<br>タグが挿入されます。
1 2 3 4 5 6 7 8 9 |
$val = "AAA\nBB\nC"; echo nl2br($val); /* AAA<br /> BB<br /> C */ |
この関数は全ての改行コード(\r, \n, \r\n)を変換してくれます。
また、第2引数はXHTML準拠の改行を使うか否かを指定でき、省略した場合はtrueとなります。
nl2br($val) or nl2br($val, true)
<br />に変換される
nl2br($val, false)
<br>に変換される
基本的には省略しておけば良いでしょう。
<br>タグを改行コードに変換する場合は正規表現を使って自力で
nl2brは用意されているのに何故かその逆の関数は用意されていません。。。
なので正規表現を使って自力で変換します。
1 2 3 4 5 6 7 8 9 10 |
$val = "ああああ<br>いいい<br />うう<BR / >え"; echo preg_replace('/<br[[:space:]]*\/?[[:space:]]*>/i', "\n", $val); /* ああああ いいい うう え */ |
preg_replaceを使って正規表現に一致する箇所を改行コードに変換できました!
見てもらえば分かるように上記の正規表現を使えば
<br><br /><BR / >
など様々なタイプに対応できます。
正規表現の解説
ぱっと見で正規表現の意味が分からない人のために解説します。
/<br[[:space:]]*\/?[[:space:]]*>/i
/~/オプション
/(スラッシュ)から/(スラッシュ)の間に正規表現を記述し、オプションがある場合(ここではi)はその後に書きます
[[:space]]
空白文字を表します
*
直前の文字がなくてもいくつあっても一致する(この場合は空白がなくてもいくつあっても一致という意)
\/
\が直後の文字をエスケープするという意。ここでは\/で単に/(スラッシュ)を表している
?
直前の文字が0個か1個の場合一致(ここでは/があってもなくても一致という意)
i(オプション)
大文字と小文字を区別しない
正規表現はたくさんあって覚えるのが大変なのでその都度覚えていきましょう。
さいごに
注意点としてnl2brは<br>タグを挿入するだけで、改行コードは残ったままなので、
1行にしてDBに登録したい
などといったときはもう1工夫必要です。
こちらの記事で解説しています。
【PHP】nl2brで<br>タグを挿入した後改行コードを削除変換する方法!1行の文字列にしたいのさ
それでは!また!!
人気の記事だけ集めたので是非覗いていってください^^
厳選!目的別にオススメ記事を紹介-あなたの欲しい情報がここに-