PHPのpreg_match関数とpreg_grep関数の違いについて解説します。
主な違い
preg_match(): 1つの文字列に対してパターンマッチング- 戻り値: マッチ数(0 or 1)、マッチ内容は第3引数で取得
- 用途: 単一文字列の検証・抽出
preg_grep(): 配列全体に対してパターンマッチング- 戻り値: マッチした要素の配列(キーは保持)
- 用途: 配列のフィルタリング
簡単な例
php
// preg_match()
preg_match('/^[0-9]+$/', '123'); // 1(マッチ)
// preg_grep()
$arr = ['abc', '123', 'def', '456'];
preg_grep('/^[0-9]+$/', $arr); // ['123', '456']
ポイント
preg_match(): 最初のマッチで停止(全マッチはpreg_match_all())preg_grep():array_filter()のパターンマッチ版と考えるとわかりやすい
preg_match()
一つの文字列に対して正規表現を使った検索結果を返す。
preg_match() は最初のマッチで停止するので、全ての検索結果を求める場合は preg_match_all() を使う。
preg_grep()
配列に対して正規表現を使った検索結果を返す。
