関数 preg_last_error
関数 preg_last_errorは、正規表現関連の関数を使用した際に発生した
最終エラーのコードを返します。
preg_matchやpreg_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,
正規表現における特殊文字をエスケープします