PHPで正規表現で文字列を検索する方法:preg_match関数

投稿日: 作成:   更新:

PHPで正規表現で文字列検索するには「preg_match関数」を使います。

  • 文字を変数の中から検索したい。
  • 正規表現を使って文字検索したい。
  • 「前方一致、後方一致」で検索するには?

このような内容について解説します。

私はWEB開発中心に、フロントエンド、サーバーサイド、サーバー構築など経験豊富なエンジニアです。
少しでも分かりやすく解説していきたいと思います。

それでは行きましょう!

preg_match関数とは

preg_match(正規表現, 検索対象文字)
引数 第1引数:正規表現パターンを指定します。(string)
必ず「/(スラッシュ)」で囲んで指定します。
例:’/PHP/’
第2引数:検索対象文字(string)
戻り値 正規表現にマッチする/しない ⇒ true/false(boolean)

※正確には、preg_match関数に第5引数までありますが、
第2引数までで事が足りることが多いので割愛します。

preg_match関数の使い方

次のソースコードでは、変数$strの中から「バナナ」があるかチェックしています。

<?php

$str = 'この文字列にバナナが入っている';

// 「バナナ」を正規表現で指定する
if (preg_match('/バナナ/', $str)) {
    echo 'バナナを発見';
} else {
    echo 'バナナは見つからなかった・・・';
}

?>

実行結果:

「バナナを発見」が表示されました。

文字列に「バナナ」が含まれているか、部分一致で検索してみました。
今度は「前方一致、後方一致」など、色々なパターンで文字列を検索してみましょう。

色々なパターンで文字列検索してみる

前方一致

正規表現で前方一致するには「^」を先頭に指定します。

<?php

$str = 'バナナは甘くて美味しい';

// 「^」は行頭を指している
if (preg_match('/^バナナ/', $str)) {
    echo '「バナナ」から文字列が始まっている';
} else {
    echo '「バナナ」から文字列が始まっていない';
}

?>

$strの中身で「バナナ」が行頭にありますので、【「バナナ」から文字列が始まっている】と表示されます。

後方一致

正規表現で後方一致するには「$」を末尾に指定します。

<?php

$str = 'バナナは甘くて美味しい';

// 「$」は行末を指している
if (preg_match('/美味しい$/', $str)) {
    echo '「美味しい」で文字列が終わっている';
} else {
    echo '「美味しい」で文字列が終わっていない';
}

?>

$strの中身で「美味しい」が行末にありますので、【「美味しい」で文字列が終わっている】と表示されます。

郵便番号かどうか判定

preg_match関数は正規表現で「郵便番号」形式などをチェックできます。

次のソースコードでは、文字列$strが郵便番号のハイフン付き7桁かどうかをチェックしています。

<?php

$str = '123-4567';

if (preg_match('/^[0-9]{3}-[0-9]{4}$/', $str)) {
    echo '郵便番号の形式です';
} else {
    echo '郵便番号の形式ではありません';
}

?>

「郵便番号の形式です」が表示されます。

他にもURL形式や、電話番号など正規表現を指定すれば、色々なチェックができます。

正規表現チェッカーを使う

正規表現を試すのに、
 PHPのpreg_matchを書き換えて → ブラウザを更新
をするのが大変です。。

私はブラウザ更新をしなくてもOKな「正規表現チェッカー」を利用しています。

「PHP 正規表現 チェッカー」でGoogle検索すると、
うれしいことに、色々な方が正規表現チェッカーをWebサイトで提供してくれています。

その中でも私はRakkoさんの正規表現チェッカーを利用しています。
直感的、視覚的に使いやすいです。
https://rakko.tools/tools/57/

使い方は「正規表現」にパターンを入れて「検証対象の文字列」に文字入力して意図したチェックができているかテストします。

意図したパターンが完成したらPHPのpreg_matchを書き換えて反映する流れです。

まとめ

PHPで正規表現で文字列検索するpreg_match関数について解説しました。

  • preg_match関数とは
  • preg_match関数の使い方
  • 色々なパターン(前方一致、後方一致、郵便番号形式)
  • 正規表現チェッカーを使う

正規表現は、入力文字をチェックするのに大変便利で、
他のプログラム言語でも共通して使えます。

これを機に正規表現の使い方を覚えてみてはいかがでしょうか?

正規表現について詳しく勉強したい方は、オライリー本がオススメです。