208 of 410 menu

関数 preg_last_error

関数 preg_last_errorは、正規表現関連の関数を使用した際に発生した 最終エラーのコードを返します。 preg_matchpreg_replaceなどの関数がfalseを返した場合など、 正規表現のデバッグに有用です。 この関数はパラメータを受け取りません。

この関数は整数のエラーコードを返します。 利便性のため、エラーコードは特別な定数(以下の表を参照)と 比較することができます。

構文

preg_last_error(): int;

エラー定数一覧

定数 説明
PREG_NO_ERROR 0 エラーは発生しませんでした
PREG_INTERNAL_ERROR 1 PCREの内部エラー
PREG_BACKTRACK_LIMIT_ERROR 2 バックトラック制限を超過しました (backtrack limit)
PREG_RECURSION_LIMIT_ERROR 3 再帰制限を超過しました
PREG_BAD_UTF8_ERROR 4 不正なUTF-8データ
PREG_BAD_UTF8_OFFSET_ERROR 5 オフセットが有効なUTF-8コードの先頭と一致しません
PREG_JIT_STACKLIMIT_ERROR 6 JITコンパイラのスタック制限を超過しました

不正な正規表現の後にエラーを確認してみましょう:

<?php preg_match('/invalid(regex/', 'test'); $error_code = preg_last_error(); echo $error_code; ?>

コード実行結果:

4

PCREエラー定数との併用:

<?php preg_match('/(?:\D+/', 'abc123'); if (preg_last_error() === PREG_BACKTRACK_LIMIT_ERROR) { echo 'Backtrack limit was exhausted'; } ?>

コード実行結果:

'Backtrack limit was exhausted'

関連項目

  • 関数 preg_match,
    正規表現にマッチするかを調べます
  • 関数 preg_replace,
    正規表現検索に基づいて置換を行います
  • 関数 preg_quote,
    正規表現における特殊文字をエスケープします
日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否