PHP preg_match(): 正規表現 (Regex)
PHPの正規表現とは何ですか?
PHP 正規表現 正規表現とも呼ばれる正規表現は、単一の式で実行できる強力なパターン マッチング アルゴリズムです。正規表現では、(+、-、^) などの算術演算子を使用して複雑な式を作成します。電子メール アドレスや IP アドレスなどの検証などのタスクを実行するのに役立ちます。
正規表現を使用する理由
- PHP 正規表現を使用すると、単一の関数を呼び出すだけで文字列データ内のパターンを簡単に識別できます。 これによりコーディング時間を節約できます。
- メールアドレス、ドメイン名、電話番号、IPアドレスなどのユーザー入力を検証する場合、
- 検索結果内のキーワードを強調表示する
- カスタム HTML テンプレートを作成する場合。 PHP の正規表現を使用すると、テンプレート タグを識別し、実際のデータに置き換えることができます。
PHP の組み込み正規表現関数
PHP には、この PHP 正規表現チュートリアルで学習する正規関数を操作できるようにする関数が組み込まれています。 PHP で一般的に使用される正規表現関数を見てみましょう。
- PHP の preg_match() – この関数は、PHP で文字列のパターン マッチングを実行するために使用されます。 一致が見つかった場合は true を返し、一致が見つからなかった場合は false を返します。
- PHP の preg_split() – この関数は、文字列に対してパターン マッチを実行し、結果を数値配列に分割するために使用されます。
- PHP の preg_replace() – この関数は、文字列に対してパターン マッチを実行し、一致したものを指定されたテキストに置き換えるのに使用されます。
以下は、PHP preg_match()、PHP preg_split()、または PHP preg_replace() などの正規表現関数の構文です。
<?php function_name('/pattern/',subject); ?>
ここに、
- 「function_name(…)」は、PHP preg_match()、PHP preg_split()、または PHP preg_replace() のいずれかです。
- 「/…/」 スラッシュは、PHP 正規表現テスター関数の始まりと終わりを示します。
- 「'/pattern/'」は照合する必要があるパターンです
- 「件名」は照合対象のテキスト文字列です。
次に、上記の PHP 正規表現関数を実装する実際の例を見てみましょう。
PHP の Preg_match()
最初の例では、PHP 関数の preg_match() を使用して、指定された URL 内の単語 guru の単純なパターン マッチングを実行します。
以下のコードは、上記の例の preg_match() テスター関数の実装を示しています。
<?php $my_url = "www.guru99.com"; if (preg_match("/guru/", $my_url)) { echo "the url $my_url contains guru"; } else { echo "the url $my_url does not contain guru"; } ?>
URL を参照してください http://localhost/phptuts/preg_match_simple.php
出力を担当するコードの部分を調べてみましょう。preg_match('/guru/', $my_url)” ここに、
- 「preg_match(…)」はPHPの正規表現関数です。
- 「'/guru/'」は一致する正規表現パターンです
- 「$my_url」は、照合するテキストを含む変数です。
下の図は上記の点をまとめたものである。
PHP Preg_split()
次に、PHP 関数で preg_split() を使用する別の例を見てみましょう。
文字列フレーズを取得し、それを配列に分解します。 一致するパターンは単一のスペースです。
この例で使用するテキスト文字列は「I Love Regular Expressions」です。
以下のコードは、上記の例の実装を示しています。
<?php $my_text="I Love Regular Expressions"; $my_array = preg_split("/ /", $my_text); print_r($my_array ); ?>
URL を参照してください http://localhost/phptuts/preg_split.php
PHP Preg_replace()
次に、次の preg_replace() を見てみましょう。 PHP関数 パターンの一致を実行し、パターンを別のものに置き換えます。
以下のコードは、「guru」という単語を検索します。 string.
これは、「guru」という単語を、背景色を強調表示する CSS コードで囲まれた「guru」という単語に置き換えます。
<?php $text = "We at Guru99 strive to make quality education affordable to the masses. Guru99.com"; $text = preg_replace("/Guru/", '<span style="background:yellow">Guru</span>', $text); echo $text; ?>
ファイル preg_replace.php を保存したと仮定して、ブラウザで URL にアクセスします。 http://localhost/phptuts/preg_replace.php
正規表現のメタ文字
上記の例では、非常に基本的なパターンが使用されています。メタ文字を使用すると、電子メール アドレスの有効性をテストするなど、より複雑なパターン マッチを実行できます。次に、よく使用されるメタ文字を見てみましょう。
メタキャラクター | 説明 | 例 |
---|---|---|
. | 改行を除く任意の XNUMX 文字と一致します | /./ は XNUMX 文字を含むものに一致します |
^ | または文字列の先頭に一致 / 文字を除外 | /^PH/ は、PH で始まる任意の文字列と一致します。 |
$ | 文字列の末尾のパターンに一致します | /com$/ は、guru99.com、yahoo.com などに一致します。 |
* | 0 個以上の任意の文字と一致します | /com*/ はコンピュータ、通信などに一致します。 |
+ | 前の文字が少なくとも XNUMX 回出現する必要があります | /yah+oo/ は yahoo と一致します |
\ | メタ文字をエスケープするために使用されます | /yahoo+\.com/ はドットをリテラル値として扱います |
[...] | キャラクタークラス | /[abc]/ は abc と一致します |
AZ | 小文字と一致します | /az/ は、cool、happy などに一致します。 |
AZ | 大文字と一致します | /AZ/ は、WHAT、HOW、WHY などに一致します。 |
0-9 | 0 から 9 までの任意の数値と一致します | /0-4/ は 0,1,2,3,4、XNUMX、XNUMX、XNUMX、XNUMX に一致します |
上記のリストには、正規表現で最も一般的に使用されるメタ文字のみが示されています。
ここで、電子メール アドレスの有効性をチェックするかなり複雑な例を見てみましょう。
<?php $my_email = "name@company.com"; if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) { echo "$my_email is a valid email address"; } else { echo "$my_email is NOT a valid email address"; } ?>
パターン「[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/」の説明」
ここに、
- 「'/…/'」は正規表現の始まりと終わりです
- “^[a-zA-Z0-9._-]” は、小文字または大文字、0 から 9 までの数字、ドット、アンダースコア、ダッシュに一致します。
- 「+@[a-zA-Z0-9-]」は、@ 記号の後に小文字または大文字の英字、0 から 9 までの数字、またはダッシュが続くものと一致します。
- 「+\.[a-zA-Z.]{2,5}$/」はバックスラッシュを使用してドットをエスケープし、文字列の末尾にある文字長 2 ~ 5 の小文字または大文字と一致します。
URL を参照してください http://localhost/phptuts/preg_match.php
上記の例の内訳からわかるように、メタキャラクターはパターンのマッチングに関して非常に強力です。
まとめ
- PHP の正規表現または Regex はパターン一致アルゴリズムです
- 正規表現は、検証チェックを実行したり、タグを認識する HTML テンプレート システムを作成したりする場合に非常に役立ちます。
- PHP 正規表現をサポートする組み込み関数、つまり PHP preg_match()、PHP preg_split()、および PHP preg_replace() が組み込まれています。
- メタ文字を使用すると複雑なパターンを作成できます