preg_match

関数の概要

PHPの preg_match 関数は、正規表現パターンに文字列がマッチするかどうかを調べるために使われます。文字列内に特定のパターンが存在するかどうかを判定したい場合に非常に便利で、入力チェックやテキスト解析など幅広い場面で活用されています。

パラメータの説明

  • pattern(文字列): マッチさせたい正規表現のパターンを指定します。デリミタ(通常はスラッシュ /)で囲む必要があります。
  • subject(文字列): 検索対象の文字列です。
  • matches(配列・省略可): マッチした部分文字列やキャプチャされたグループを受け取る配列です。渡した場合はマッチ内容が格納されます。
  • flags(整数・省略可): マッチの動作を制御するフラグです。一般的には使用しません。
  • offset(整数・省略可): 検索開始位置を指定します。文字列の何バイト目から検索を始めるかを設定できます。

戻り値

preg_match は、パターンにマッチした場合は 1、マッチしなかった場合は 0、エラーが発生した場合は FALSE を返します。

使用例

基本的な使い方

$str = "Hello World!";
if (preg_match("/World/", $str)) {
    echo "マッチしました。";
} else {
    echo "マッチしませんでした。";
}

文字列の中に「World」という部分文字列が含まれているかを判定しています。この場合は「マッチしました。」と表示されます。

マッチした内容を取得する

$email = "user@example.com";
if (preg_match("/(w+)@(w+.w+)/", $email, $matches)) {
    echo "メールアドレスのユーザー名: " . $matches[1] . "n";
    echo "ドメイン部分: " . $matches[2] . "n";
}

正規表現のキャプチャグループを利用して、メールアドレスのユーザー名とドメイン部分をそれぞれ抽出しています。

複数条件を含む判定

$password = "Passw0rd!";
if (preg_match("/[A-Z]/", $password) 
    && preg_match("/[0-9]/", $password) 
    && preg_match("/[W]/", $password)) {
    echo "パスワードは大文字・数字・記号を含んでいます。";
} else {
    echo "パスワードの要件を満たしていません。";
}

大文字、数字、記号を含むかをそれぞれ別々の preg_match でチェックし、複雑なパスワード要件を満たしているか判定しています。

関連する関数

  • preg_match_all : パターンに一致するすべての結果を取得する
  • preg_replace : 正規表現にマッチした部分を置換する
  • preg_split : 正規表現を区切り文字として文字列を分割する

まとめ

preg_match はPHPで正規表現を使ったマッチングに欠かせない基本的な関数です。パターンマッチングによって文字列の検証や解析が簡単にできるため、フォームの入力チェックやデータ抽出など実務でも幅広く使われます。戻り値を確認し、必要に応じてマッチした内容を取得することで、より柔軟な文字列処理が可能になります。