0

文字列に正規表現が含まれていること、およびそれが PHP で有効であることを検証しようとしています。通常、私は次の方法でこれを行います

<?php
@preg_match($string, '') !== false;

これにより警告が生成されますが、それ@を抑制するために使用しているので問題ありません。set_error_handlerただし、エラーをキャッチするために使用すると、サプレッサーにもかかわらずハンドラーがまだトリガーされるため、問題が発生し@ます。

警告をスローすることなく、提供されたコードと同様のことをしたいと思います。

スローされる警告は次のとおりです。

preg_match(): Delimiter must not be alphanumeric or backslash
4

1 に答える 1

3

これをエラーハンドラーに追加するだけです:

function user_error_handler($severity, $msg, $filename, $linenum, $content) {
    if (0 == (error_reporting() & $severity)) return;
    ...
}

この場合、@演算子のため、 error_reporting()0 が返されます。

于 2013-02-21T20:54:50.557 に答える