[PHP-users 35668] Re: 正規表現が有効であるかの判定

菊澤 正明 kikuzawa @ cyber-coo.com
2012年 2月 16日 (木) 12:33:57 JST


菊澤と申します。

preg_matchに間違った正規表現パターンを入れるとW_WARNINGが発生します。
そのエラーをハンドリングしてやればいいと思います。

こんな感じでどうでしょう。

function error_handler($errno, $errstr, $errfile, $errline)
{
    global $preg_pattern_error;
    $preg_pattern_error = true;
}

$pattern = webからの入力文字列;
$preg_pattern_error = false;
set_error_handler("error_handler", E_WARNING);
@preg_match('/' . $pattern . '/', "");
restore_error_handler();

if ($preg_pattern_error) {
    // 間違った正規表現パターンです。
} else {
    // 正しい正規表現パターンです。
}

On Thu, 16 Feb 2012 12:01:08 +0900
kobayashi <kobayan.ml @ gmail.com> wrote:

> 小林と申します。
> 
> preg_match による正規表現判定を行おうと思っていますが、
> パターン文字列として、WEBフォーム等からユーザが入力した文字列を
> 用いることを考えています。
> 
> ユーザ入力の文字列が正確な正規表現である保障はないため、
> 入力された文字列を preg_match に通す前に、
> まずその文字列が有効な正規表現であるかどうかの判定を
> 行いたいと思っています。
> 
> そのような判定をするにはどのような方法をとれば良いでしょうか?
> 
> -- 
> kobayashi <kobayan.ml @ gmail.com>
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3

--------------------------------------------
菊澤 正明  mailto:kikuzawa @ cyber-coo.com



PHP-users メーリングリストの案内