preg_grep

関数の概要

PHPの preg_grep 関数は、配列の各要素に対して正規表現パターンを用いてマッチングを行い、一致した要素のみを抽出して新しい配列として返します。この関数を使うことで、大量の配列データから条件に合う文字列だけを簡単に抽出でき、文字列フィルタリングなどで非常に役立ちます。

パラメータの説明

  • pattern: string – 検索に使う正規表現パターンを指定します。スラッシュで囲む形式が一般的です。
  • input: array – 正規表現で検索したい対象の配列を指定します。
  • flags: int(省略可)- 結果の配列のキーの扱いを制御します。デフォルトはキーを保持します。
    主な値は:

    • PREG_GREP_INVERT: 一致しない要素を返す

戻り値

マッチした要素のみを含む配列を返します。元の配列のキーはデフォルトで保持されます。もしマッチがなければ空の配列となります。

使用例

基本的な使い方

<?php
$array = ['apple', 'banana', 'cherry', 'date'];
$result = preg_grep('/a/', $array);
print_r($result);
?>

この例では、配列の中から「a」という文字を含む要素だけを抽出しています。結果は applebananadate が取得できます。

大文字・小文字を区別しない検索

<?php
$array = ['Apple', 'banana', 'Cherry', 'Date'];
$result = preg_grep('/a/i', $array);
print_r($result);
?>

正規表現の後ろに i フラグを付けることで、大文字・小文字を無視して検索しています。Applebanana など「a」を含む全ての要素が抽出されます。

一致しない要素を抽出する例

<?php
$array = ['dog', 'cat', 'bird', 'fish'];
$result = preg_grep('/i/', $array, PREG_GREP_INVERT);
print_r($result);
?>

ここでは PREG_GREP_INVERT フラグを使い、「i」を含まない要素のみを抽出しています。結果は dogcat になります。

関連する関数

  • preg_match – 文字列が正規表現にマッチするか調べる
  • preg_match_all – 文字列の中で正規表現にマッチした全ての部分を取得する
  • array_filter – コールバック関数で条件を指定し配列を絞り込む
  • preg_replace – 正規表現にマッチした文字列を置換する

まとめ

preg_grep は、配列の要素から正規表現に一致するものだけを簡単に抽出できる便利な関数です。配列の絞り込み処理を正規表現で柔軟に行いたい場合に非常に役立ちます。キーを保持したまま抽出できるため、元の配列との関連性を保てる点も実務で使いやすい特徴です。正規表現のパターンを工夫しながら、フィルタリング処理の効率を高める際には積極的に活用しましょう。