PHPで正規表現パターンをバリデーションする

(1/1)
PHPで正規表現パターンを入力するようなプログラムでは、実行してみないと、その正規表現パターンが正しいかどうかが分からない。そこで今回は、入力した正規表現パターンが正しいかどうかバリデーションする関数を作ってみることにする。

サンプル・プログラムの実行例

PHPで正規表現パターンをバリデーションする

目次

サンプル・プログラムのダウンロード

圧縮ファイルの内容
validRegexPattern.phpサンプル・プログラム本体
pahooInputData.phpデータ入力に関わる関数群。
使い方は「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。
validRegexPattern.php 更新履歴
バージョン 更新日 内容
1.0.0 2025/03/15 初版
pahooInputData.php 更新履歴
バージョン 更新日 内容
1.8.1 2025/03/15 validRegexPattern() -- debug
1.8.0 2024/11/12 validRegexPattern() 追加
1.7.0 2024/10/09 validURL() validEmail() 追加
1.6.0 2024/10/07 isButton() -- buttonタグに対応
1.5.0 2024/01/28 exitIfExceedVersion() 追加

解説:初期値など

初期値などは、あらかじめ定数で定義しておく。
変更不可となっている定数以外は、自由に変更できる。

validRegexPattern.php

  53: // 初期値(START) =============================================================
  54: // 表示幅(ピクセル)
  55: define('WIDTH', 600);
  56: 
  57: // 正規表現パターン(デフォルト値)
  58: define('DEF_REG', '/https?\:\/\/www\.pahoo\.org\//ui');
  59: 
  60: // 初期値(END) ===============================================================

解説:正規表現のバリデーション

ユーザー定義関数 validRegexPattern は、引数に与えた正規表現パターンが正しいかどうかをバリデーションする。

やっていることは簡単で、正規表現パターンを組み込み関数  preg_match  に与えて実行し、エラーが発生するかどうかを見ている。

なお、正規表現パターンと文字列の組み合わせでエラーが発生する場合(正規表現パターンが /(?:\D+<\d+>)*[!?]/ で、文字列が 'foobar foobar foobar' の場合など)もあるので、第2引数に文字列も渡せるようにした。省略時には空文字が渡る。

pahooInputData.php

 481: /**
 482:  * 正規表現のバリデーションを行う.
 483:  * @参考URL https://www.pahoo.org/e-soul/webtech/php06/php05-23-01.shtm
 484:  * @param   string $reg  正規表現;スラッシュ /.../ で囲むこと.
 485:  * @param   string $text マッチングさせる文字列;デフォルトでは空文字
 486:  * @return  bool TRUE:正規表現/FALSE:正規表現ではない
 487: */
 488: function validRegexPattern($reg, $text='') {
 489:     $res = @preg_match($reg, $text);
 490:     return ($res === FALSE? FALSE : TRUE;
 491: }

解説:メインプログラム

メインプログラムでは、前述のユーザー定義関数 validRegexPatternまず配列 $TrainType を実行し、エラーがある場合には、組み込み関数  preg_last_error_msg  を使ってエラーメッセージを取得する。

validRegexPattern.php

 190: // メイン・プログラム =======================================================
 191: // パラメータを取得する.
 192: $reg = getParam('reg', TRUE, DEF_REG);
 193: 
 194: // 正規表現パターンをバリデーションする.
 195: $res = validRegexPattern($reg);
 196: 
 197: // 正規表現パターンのコンパイル時エラーメッセージを取得する.
 198: $errmsg = ($res === FALSE? preg_last_error_msg() : '';
 199: 
 200: // 表示HTMLを作成する.
 201: $HtmlBody = makeCommonBody($reg, $errmsg);
 202: 
 203: // 表示処理
 204: echo $HtmlHeader;
 205: echo $HtmlBody;
 206: echo $HtmlFooter;

参考サイト

(この項おわり)
header