分類

    Qumeru

    preg_match関数 | PHP関数リファレンス

    利用できるPHPのバージョンPHP 4, PHP 5, PHP 7

    preg_match関数とは

    PHPのpreg_match関数は文字列に対して、正規表現を用いてパターンマッチングを行うことができます。

    フォームでユーザーに入力された文字列に対してpreg_matchを使ってバリデーションを行い、マッチしなければエラーを出すというような場面で使うことが多いです。

    preg_match関数の使い方

    構文

    preg_match

    preg_match(正規表現, 検索文字列, 検索結果, フラグ, 検索開始位置)

    パラメータ

    正規表現と検索文字列は必須のパラメータです。検索結果、フラグ、検索開始位置の3つのパラメータについては任意パラメータです。

    正規表現

    第一引数には正規表現を表す文字列を指定します。

    検索文字列

    第二引数には正規表現でマッチさせたい文字列を指定します。

    検索結果

    配列を指定することで、パターンにマッチした場合に検索結果を代入されます。

    フラグ

    PREG_OFFSET_CAPTUREを指定することで、検索結果にマッチした文字列の先頭位置をバイト数で得ることができます。

    その場合は検索結果に配列を指定する必要があります。

    検索開始位置

    デフォルトでは検索文字列の先頭から検索が開始されますが、この引数で検索開始位置を指定することができます。

    返り値

    パターンにマッチした場合は1を返し、パターンにマッチしなかった場合は0を返します。

    preg_match関数を使った例

    部分一致で検索

    一番シンプルな使い方です。$patternで指定した単語が$str文字列に含まれているかをpreg_matchで判定しています。

    $strThis is apple.という文字列に$patternで指定したappleが含まれているため、preg_match1を返します。

    if文で1trueと解釈され、条件式は真となり"マッチしました。"という文字列が出力されます。

    完全一致で検索

    ^は正規表現では先頭を表すメタ文字という特殊な意味を持つ文字です。また、$は末尾を表します。

    両方を用いることで、$patternで指定したappleという単語と$strで指定した文字列が完全に一致する場合に条件式が真となります。

    今回、$strにはThis is apple.を指定しているため、条件式は偽となり"マッチしませんでした。"という文字列が出力されます。

    3文字から8文字以内の半角英数字を検索

    []の中では文字クラスを指定します。0-9で半角数字、a-zで半角英小文字、A-Zで半角英大文字を表現します。

    {}の中では文字数を指定します。カンマ区切りすることで、左側の3文字から右側の8文字以内の文字数を表現しています。

    上記の2つを組み合わせることで、3文字から8文字以内の半角英数字を$patternでは表現することができます。

    $strappleは5文字なので、条件式は真となり"マッチしました。"という文字列を出力します。

    複数の単語を検索

    正規表現内で|(パイプライン)で区切ることで、複数の単語を検索することができます。

    applelemonの2つの単語を指定していますが、$strの文字列にはいずれかの単語が含まれていると条件式は真となります。

    どちらも含まれていない場合に条件式は偽となります。

    preg_match関数の注意点

    文字列内にある文字列が含まれているかどうかを単純に調べるだけなら、preg_matchではなくstrposなどの他の関数を使った方が速く処理をすることができます。