【PHP】これで分かる関数! – 正規表現 –

PHP

更新履歴

更新日更新者更新内容
2021/7/3JJI関数の記事が長いため、記事を分割
分割に伴い、リンク先の修正
2021/7/17JJI正規表現のよく使用するパターンを追記
2021/8/21JJI・サンプルプログラムの実行結果に画面の画像を追加

はじめに

正規表現は、複数文字列に一致するパターンを1つの形式で表現できる方法です。
正規表現を使用すれば、ある特定の文字列のパターンを検索した場合、1つの形式で表現することができます。

例えば、日本の携帯電話番号(例:090-1234-5678)は次の形式になっています。

  • 090、080、070の3桁の数字開始する
  • 上記の番号の後は半角ハイフン(-)で区切られた0~9の任意数字4桁が2つ続く

携帯電話番号に一致しているかどうか調べたい場合、正規表現を使用すれば次の形式で表現できます。

^0[7-9]0-\d{4}-\d{4}

この正規表現を使用したサンプルプログラムは次の通りです。
サンプルプログラムの中に書いている正規表現の構文・関数はこの後に説明します。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // 共通ライブラリの読み込み
    require_once __DIR__ . "../../../lib/sample_common.php";

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】正規表現<br>\n";

    $match = "/^0[7-9]0-\d{4}-\d{4}/";

    $str1 = "090-1234-5678";
    echo "$str1:" . preg_match($match, $str1) . ":<br>\n";

    $str1 = "090-123-5678";
    echo "$str1:" . preg_match($match, $str1) . ":<br>\n";

    $str1 = "050-1234-5678";
    echo "$str1:" . preg_match($match, $str1) . ":<br>\n";
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_06_01.php<br>
【PHP】正規表現<br>
090-1234-5678:1:<br>
090-123-5678:0:<br>
050-1234-5678:0:<br>

正規表現の構文

正規表現を使用するには、正規表現の構文を知っておく必要があります。
構文は大量にあるため、全てを覚えることは難しいです。
構文のパターンを理解しておいて実際に使用する場合は構文の解説ページを見ながら使えるようにすることで大丈夫です。

この記事では代表的な構文について説明します。
記事の内容が長いため、詳細は次の記事を見てください。

よく使用する関数

正規表現でよく使用する関数は次の通りです。

関数マルチバイト関数説明(PHPマニュアル抜粋)
preg_filter正規表現による検索と置換を行う
preg_grepパターンにマッチする配列の要素を返す
preg_match_all繰り返し正規表現検索を行う
preg_matchmb_ereg正規表現によるマッチングを行う
preg_replacemb_ereg_replace正規表現検索および置換を行う
preg_splitmb_split正規表現で文字列を分割する

正規表現関数その1

次の正規表現関数についてサンプルプログラムで説明します。

  • preg_filter
  • preg_grep

詳細はこちらを見てください。

正規表現関数その2

次の正規表現関数についてサンプルプログラムで説明します。

  • preg_match
  • mb_ereg

詳細はこちらを見てください。

正規表現関数その3

次の正規表現関数についてサンプルプログラムで説明します。

  • preg_match_all
  • preg_replace
  • mb_ereg_replace

詳細はこちらを見てください。

正規表現関数その3

次の正規表現関数についてサンプルプログラムで説明します。

  • preg_split
  • mb_split

詳細はこちらを見てください。

正規表現でよく使用するパターン

正規表現でよく使用するパターンについて次の記事で紹介します。

最後に

この記事では正規表現について説明しました。
正規表現は理解するのが難しいのですが、理解できるようになるとコードを簡単に書くことができます。

最初から正規表現の全てを理解する必要はありません。
この記事や他の情報を参考にしながら少し覚えるようにしてください。

コメント