1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
/* -------------------------------------------------------------------------------------------------
* 正規表現:preg_last_errorの例
* ---------以下の定数のいずれかを返す----------------------------------------------------------
* PREG_NO_ERROR : エラーが存在しなかった場合
* PREG_INTERNAL_ERROR : 内部エラーが発生した場合
* PREG_BACKTRACK_LIMIT_ERROR : バックトラック処理の制限値→デフォルト"1000000"
* PREG_RECURSION_LIMIT_ERROR : 再帰処理の制限値→デフォルト"100000"
* PREG_BAD_UTF8_ERROR : 壊れている UTF8 データによって直近のエラーが発生した場合
* PREG_BAD_UTF8_OFFSET_ERROR : オフセットが妥当なUTF-8コードポイントの開始位置に対応しない場合
* (PHP5.3以降)
* ---------------------------------------------------------------------------------------------
* 作成: 2015.07.23 yoshi of CXMedia Inc.
* ------------------------------------------------------------------------------------------------- */
// 対象文字列に[!?]がなくerror
$str = 'teststring whatstring question';
preg_match('/(?:\D+|<\d+>)*[!?]/', $str);
error_check();
// 対象文字列に[!?]があるのでOK
$str = 'teststring whatstring question!';
preg_match('/(?:\D+|<\d+>)*[!?]/', $str);
error_check();
// preg処理のエラー判断のユーザ関数
function error_check(){
if(preg_last_error() == PREG_BACKTRACK_LIMIT_ERROR) {
echo 'エラー:PREG_BACKTRACK_LIMITが発生!<br>';
}
else if(preg_last_error() == PREG_NO_ERROR){
echo 'OK:PREGエラー発生なし<br>';
} else {
echo 'エラー:PREG_BACKTRACK_LIMIT以外のエラー発生!<br>';
}
}
?>