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関数の使い方
- 色々なパターン(前方一致、後方一致、郵便番号形式)
- 正規表現チェッカーを使う
正規表現は、入力文字をチェックするのに大変便利で、
他のプログラム言語でも共通して使えます。
これを機に正規表現の使い方を覚えてみてはいかがでしょうか?
正規表現について詳しく勉強したい方は、オライリー本がオススメです。