013:正規表現を使い、連続した改行コード・改行文字を取り除く対象言語:PHP
|
|
キーワード: PHP 5.0 正規表現 パターンマッチ preg_replace 連続 複数 改行コード \n \r 改行文字 削除 3個以上 2個 trim textarea 空白 |
|
訪問者がテキストエリアに書き込みができるようなインタラクティブなサイトを構築する場合、入力された文章の内容はさておき、データの整合性を管理者がいちいちチェックしていては大変です。たとえ厳格なルールを設けても、性善説でやっていけるほどサイト運営は甘いモノではないと思うのですよ。 そこでサイト管理者としては、訪問者が入力したデータをチェックしたり整形したりというプロセスを自動化したい。大抵のことはhtmlspecialchars関数でクリアできても、わけも無く改行を乱発する書き込みにはイラッとするコトもある。いや、私は確実にイラッとする。 しかしただ改行コードを削除するだけでは整形しすぎなので、理総研ではよくあるパターンとして「3個以上の改行を2個にする」を以下のように実現しています。ついでに先頭と末尾の無駄な改行と空白も除去します。 改行コードを統一する、という意味でも良いかも知れません。 | |
$text = htmlspecialchars($_POST['text'], ENT_QUOTES);
この段階で入力されたテキストデータが以下のようであったとします。
世の中には3種類の人間が居る。(\n) (\n) それは、(\n) (\n) (\n) 『数を数えられる人間』と『数を数えられない人間』だ!!!(\n)
$text = trim(preg_replace("/(\r\n){3,}|\r{3,}|\n{3,}/", "\n\n", $text));
上記のテキストは以下のように変換されています。
世の中には3種類の人間が居る。(\n) (\n) それは、(\n) (\n) 『数を数えられる人間』と『数を数えられない人間』だ!!!
|