【PHP】本当のnl2brの逆関数
新サイトに移行しました。
【PHP】本当のnl2brの逆関数【PHP4, 5, 7】| Hatoblog
備忘録。
PHPには本来、nl2br関数の逆の関数は存在しない。nl2br関数というのは、\n
等の改行文字の前にbr
等のHTML改行タグを挿入する関数。
この逆の関数(いわゆるbr2nl)は、一見br
を\n
に変換するものと考えられがちで、
preg_replace('/<br[[:space:]]*\ ?[[:space:]]*="">/i', "\n", $string); </br[[:space:]]*\>
のような正規表現で書かれている。
でも実際は違って、この関数は改行文字の前にHTML改行タグを挿入する関数なので、元の\n
自体は残る。なのでこの逆を行う関数では、単に新しく挿入されたbr
を消せばいいだけ。つまり、
function br2nl($string) { return preg_replace('/<br[[:space:]]*\ ?[[:space:]]*="">/i', "", $string); } </br[[:space:]]*\>
となる。
これでいくらnl2brとbr2nlを繰り返しても、br
が増え続けることはない。
管理ページで使っててはてと思ったので書いてみました。
どうでもいいけど、この関数名謎すぎる。