【PHP8】正規表現で文字列を検索するpreg_match関数

  •  
 
MAXIMUM に投稿

タグ

1.はじめに

例えば、実際の業務で正規表現を使って色々なパターンの検索が必要になることはないだろうか。
今回は仮に電話番号の正規表現が必要なものとして例を出して行きます。

2.正規表現とは

そもそも正規表現が何かからですが、正規とはルール化された文字列パターンのことを指し、この表現を使うことで全てそのまま合致するもの以外も検索対象に含められます。
例: 数字の場合 [0-9] 英語の場合 [A-Z] ひらがな漢字混合の場合 ^[ぁ-ん一-龠]+$

3.それぞれの関数の紹介

・strpos() はそのまま同じ文字列を抜くという使い方になります。正規表現ではないです。
・preg_match() はルール化された文字列パターンを探す時に使います。正規表現に該当します。
・preg_replace() は不要な文字を消したり置き換えたりする時に使います。同じくpreg_系なのでパターンで探します。

4.ソース例

ソースコード例としては下記になります。
変数に何を入れても電話番号として出力され、動的なWebページの作成が可能です。

$text = "電話番号は090-1234-5678です。";
if (preg_match("/[0-9]{3}-[0-9]{4}-[0-9]{4}/", $text, $matches)) {
   echo "成功:見つかった電話番号は " . $matches[0] . " です。" . PHP_EOL;
} else {
   echo "失敗:電話番号は見つかりませんでした。" . PHP_EOL;
}

preg_replaceの場合は下記のようになります。

$numberOnly = preg_replace("/[^0-9]/", "", $text);
// 結果として 09012345678 が表示される
echo $numberOnly . PHP_EOL;

5.ワイルドカードとの違い

SQLの検索などでよく使われるワイルドカードですが、正規表現と似ています。
ざっくり言うと、簡易版正規表現のことをワイルドカードと呼んでいて、使い方としては「%」より前は何入れてもOKという感じになります。後でも間でも同じように検索可能です。

6.まとめ

ゼロからでの開発段階でも使えますし、運用工程での解析作業においても使えると時短になるため、覚えておくと便利だと思いました。

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
CAPTCHA
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。