【PHP】本当のnl2brの逆関数【PHP4, 5, 7】

PHP

以前書いていたブログのリライト、備忘録メモです。
会社で以前使うタイミングがあったので、その時に作ったものです。

PHPには本来、「nl2br」関数の逆の関数は存在しません。
「nl2br」関数というのは、\n等の改行文字の前にbr等のHTML改行タグを挿入する関数です。

この逆の関数(いわゆるbr2nl)は、一見br\nに変換するものと考えられがちで、

preg_replace('/<br[[:space:]]*\ ?[[:space:]]*="">/i', "\n", $string);

のような正規表現で書かれています。

でも実際は違って、「nl2br」は改行文字の前にHTML改行タグを挿入する関数なので、元の\n自体は残ります。
なのでこの逆を行う関数では、単に新しく挿入されたbrを消せばいいだけ。つまり、

function br2nl($string)
 {
     return preg_replace('/\ ?[[:space:]]="">/i', "", $string);
 }

となります。
これでいくら「nl2br」と「br2nl」を繰り返しても、brが増え続けることはなくなり、本当の逆関数にすることが出来ました。

この不思議な関数名ですが、調べてみたところ、「newline to br」の略とのことです。英語圏では「to → 2」「for → 4」などはよく使われますが、関数名でも普通に使われるんですね。


今回紹介したような基礎的な部分も、プログラミングスクールで学ぶことで体系的、効率的に学ぶことができます。

特に初心者の方で、Progateやドットインストール、書籍で勉強しながらも「もう少し専門的なところまで学びたい」や「分からないところがあるが気軽に聞ける相手がいない」などの悩みを持っている方は多いです。

プログラミングスクールではそういった初心者からWebエンジニアとして羽ばたくまでをプロの講師がサポートしてくれます。無制限のレビューや相談が出来るところも多いので、一度検討してみてはいかがでしょうか。

このブログでも各プログラミングスクールを比較しながら紹介していますので、興味がある方は是非ご覧ください。