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