2016-04-28 25 views
1

私は、ユーザがパターンを入力することを可能にする検索ボックスを含むウェブサイトを持っており、大きな文字列に対してチェックされ、ユーザ指定のパターンに対してこれらの文字列内に一致するものがあるかどうかを調べる。これは、PHP関数preg_match()を使用して行われます。preg_matchからエラーをキャッチしてよくあるエラーメッセージを表示することはできますか?

するpreg_match()[function.pregマッチ]:不明修飾子

ユーザのようなエラーが発生するものを例えば、無効なパターンを入力したときに問題が発生するが

検索機能では、preg_match()メソッドによってスローされたエラーを処理し、画面に一般的なパターン無効メッセージを表示できる必要があります。私はオンラインで見ましたが、エラーをキャッチするすべての方法を1つのキャッチ見つけることができませんpreg_match()誰もが任意のアイデアを持って投げることができる?簡単な例

+0

try/catch構造に入れましたか? –

+0

pregは例外をスローしません... –

+1

'set_error_handler()'とスローアウェイ... – AbraCadaver

答えて

2

は、エラーハンドラを設定し、ExceptionまたはErrorExceptionを投げる:

function exception_error_handler($severity, $message, $file, $line) { 
    throw new ErrorException($message, 0, $severity, $file, $line); 
} 
set_error_handler("exception_error_handler"); 

次に/キャッチしてみてください:

try { 
    preg_match('/.*/hello', 'hello'); 
} catch (Exception $e) { 
    echo 'Caught exception: ', $e->getMessage(), "\n"; 
} 

キャッチされた例外:するpreg_match():不明修飾子を'h'

+0

残念ながら、すべての正規表現エラーがこのように捕捉されるわけではありません。例えば。私のプロジェクトで 'preg_match_all'を作成したソース文字列の無効なcharエンコーディングは、' false'を静かに返します。 ( 'preg_last_error'が' PREG_BAD_UTF8_ERROR'を報告しましたが、例外は発生しませんでした。私は未知の修飾子を使って再チェックしました。 –

関連する問題