理総研Webは、中学入試理科の暗記学習をA'n'Kingなどのデジタル教材でサポートする登録型eラーニングサイトです。
理総研
Name:
Pass:
理総研@中学受験専門:理科総合研究所
RSS
Front Page > Web Tech and Development Notes

左 理総研:技術情報と開発メモ 右

013:正規表現を使い、連続した改行コード・改行文字を取り除く

対象言語:PHP
キーワード:PHP 5.0 正規表現 パターンマッチ preg_replace 連続 複数 改行コード \n \r 改行文字 削除 3個以上 2個 trim textarea 空白
訪問者がテキストエリアに書き込みができるようなインタラクティブなサイトを構築する場合、入力された文章の内容はさておき、データの整合性を管理者がいちいちチェックしていては大変です。たとえ厳格なルールを設けても、性善説でやっていけるほどサイト運営は甘いモノではないと思うのですよ。
そこでサイト管理者としては、訪問者が入力したデータをチェックしたり整形したりというプロセスを自動化したい。大抵のことはhtmlspecialchars関数でクリアできても、わけも無く改行を乱発する書き込みにはイラッとするコトもある。いや、私は確実にイラッとする。
しかしただ改行コードを削除するだけでは整形しすぎなので、理総研ではよくあるパターンとして「3個以上の改行を2個にする」を以下のように実現しています。ついでに先頭と末尾の無駄な改行と空白も除去します。 改行コードを統一する、という意味でも良いかも知れません。
  • まずPOSTされたデータからHTMLタグ(<,>)やダブルクォーテーション("),シングルクォーテーション(')等特殊文字をHTMLエンティティに置換。超基本ですね。

$text = htmlspecialchars($_POST['text'], ENT_QUOTES);
この段階で入力されたテキストデータが以下のようであったとします。
世の中には3種類の人間が居る。(\n)
(\n)
それは、(\n)
(\n)
(\n)
『数を数えられる人間』と『数を数えられない人間』だ!!!(\n)

1段落と2段落の間は連続した改行コードが2個。2段落と3段落の間は連続した改行コードが3個。そして3段落の最後に改行コード1個。
  • 次にpreg_replace関数と正規表現によるパターンマッチで3個以上の連続した改行コード・改行文字を2個に固定します。同時にtrim関数で先頭と末尾の改行(たとえ1個でも)・空白を除去します。 以下ではバックスラッシュになってますけど、そこは「\」←円マークでOKです。

$text = trim(preg_replace("/(\r\n){3,}|\r{3,}|\n{3,}/", "\n\n", $text));
上記のテキストは以下のように変換されています。
世の中には3種類の人間が居る。(\n)
(\n)
それは、(\n)
(\n)
『数を数えられる人間』と『数を数えられない人間』だ!!!
  • trim関数は文字列の先頭と末尾のホワイトスペースを取り除くもので、ホワイトスペースとは空白だけでなく改行・タブも含みます。指定すれば特定の文字だけを取り除くことも可能です。 詳しくはリファレンスで→PHP: trim - Manual
著者 You Mizuguchi
PR
広告
  • 理総研内ショートカット
アンキング体験版へ
対新型コロナ エニグマへ
塾別合格者数のページへ
  • 理総研セレクト
Amazon
  • 投稿口コミ情報 (承認分)
> 甲陽学院中学校
> 灘中学校
> 灘中学校
> 灘中学校
> 灘中学校
> 愛光中学校
> 灘中学校
> 北嶺中学校
> 北嶺中学校
> 八戸工業大学第二高等学校附属中学校
: 理科視点・中学校情報 :
  • ブログ投稿履歴
2020-04-19 / みんなのバグレポート
> エニグマの更新履歴と備忘録
2020-04-19 / 対新型コロナ・エニグマ
> エニグマを稼働させます。
2018-02-09 / 理総研内データ
> 塾別・合格者数のページの変更
2018-02-09 / 理総研内データ
> 2018年版 塾別・合格者数の集計方法
2014-11-02 / 説明会レポート
> 神大附属中等教育学校の適性検査を考察
:: ブログ記事一覧 ::
  • 現在のピクセルプラネット
Pixel Planet - piximage/rsk-1/2020-06-07.png
:: RSK-1の開拓史へ ::
  • 理総研について
中学入試理科の日々の暗記学習をA'n'King(アンキング)などのデジタル教材でサポートする、登録制無料コンテンツサイトです。
:: 詳しくはコチラ ::
理総研 :2011.02.03 設立
管理人 :水口 佑 / Cordu-Roy
お仕事 : フリープログラマー
:大手進学塾理科講師
:テレビドラゼミ講師


Copyright © 2020 System-iDO IT Devisers All Rights Reserved.