preg_matchとpreg_match_all
PHPには正規表現で文字列を検索するためのpreg_matchとpreg_match_allという関数があります。
これらについてまとめてみました。
preg_match
preg_match(パターン,文字列,結果)
マッチした回数を返す。0また1となる。
つまり複数回の検索はしないため「g」を指定するとエラー。
$matches[0][0] : マッチした部分全体
$matches[0][1] : マッチした部分のうち1番目のサブパターンの配列
$matches[0][2] : マッチした部分のうち2番目のサブパターンの配列
preg_match_all
preg_match_all(パターン,文字列,結果,フラグ)
マッチした回数を返す。
必ず複数回の検索をするため「g」を指定するとエラー。
フラグ「PREG_PATTERN_ORDER」
$matches[0][0] : 1回目にマッチした部分全体
$matches[0][1] : 2回目にマッチした部分全体
$matches[1][0] : 1回目にマッチした部分のうち1番目のサブパターンの配列
$matches[1][1] : 2回目にマッチした部分のうち1番目のサブパターンの配列
フラグ「PREG_SET_ORDER」
$matches[0][0] : 1回目にマッチした部分全体
$matches[0][1] : 1回目にマッチした部分のうち1番目のサブパターンの配列
$matches[1][0] : 2回目にマッチした部分全体
$matches[1][1] : 2回目にマッチした部分のうち1番目のサブパターンの配列
【使用例】
パターン"/([0-9]*)x([0-9]*)/"で次の文字列を検索。
15x300
20x400
【結果】
フラグ | PREG_PATTERN_ORDER | PREG_SET_ORDER |
---|---|---|
$matches[0][0] | 10x200 | 10x200 |
$matches[0][1] | 15x300 | 10 |
$matches[0][2] | 20x400 | 200 |
$matches[1][0] | 10 | 15x200 |
$matches[1][1] | 15 | 15 |
$matches[1][2] | 20 | 200 |
$matches[2][0] | 200 | 20x400 |
$matches[2][1] | 300 | 20 |
$matches[2][2] | 400 | 400 |
まとめ
JavaScriptの正規表現のように「g」を指定することはできない。
単純にマッチするかどうかを調べるならばpreg_matchを使う。
検索結果を後で使うならばpreg_match_allを使う。
[ 2012年9月26日 | カテゴリー: PHP | タグ: まとめ , 正規表現 ]
« 自動車保険の保険料が値上げ | 春分の日、秋分の日を求める関数 »
コメントを残す