PHPの正規表現とは何ですか?
PHP正規表現 正規表現とも呼ばれる強力なパターンマッチングアルゴリズムは、単一の式で実行できます。 正規表現は、(+、-、^)などの算術演算子を使用して複雑な式を作成します。 これらは、電子メールアドレス、IPアドレスなどの検証などのタスクを実行するのに役立ちます。
正規表現を使用する理由
- PHP正規表現は、単一の関数を呼び出すことにより、文字列データのパターンの識別を簡素化します。 これにより、コーディング時間を節約できます。
- メールアドレス、ドメイン名、電話番号、IPアドレスなどのユーザー入力を検証する場合、
- 検索結果でキーワードを強調表示する
- カスタムHTMLテンプレートを作成する場合。 PHPの正規表現を使用して、テンプレートタグを識別し、実際のデータに置き換えることができます。
この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()を使用する別の例を見てみましょう。
文字列フレーズを取得して、配列に分解します。 一致するパターンは単一のスペースです。
この例で使用されるテキスト文字列は「ILoveRegularExpressions」です。
以下のコードは、上記の例の実装を示しています。
<?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()
次に、パターンマッチングを実行してから、パターンを別のものに置き換えるPHP関数のpreg_replace()を見てみましょう。
以下のコードは、文字列内のguruという単語を検索します。
これは、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
正規表現のメタ文字
上記の例では、非常に基本的なパターンを使用しました。 メタ文字を使用すると、電子メールアドレスの有効性をテストするなど、より複雑なパターン一致を実行できます。 次に、一般的に使用されるメタ文字を見てみましょう。
メタ文字 | 説明 | 例 |
---|---|---|
。 | 改行以外の任意の1文字に一致します | /./単一の文字を持つものすべてに一致します |
^ | 文字列の先頭または文字列に一致/文字を除外 | / ^ PH /は、PHで始まるすべての文字列に一致します |
$ | 文字列の最後のパターンに一致します | / com $ /はguru99.com、yahoo.comなどに一致します。 |
* | ゼロ(0)以上の文字に一致します | / com * /は、コンピューター、通信などに一致します。 |
+ | 前の文字が少なくとも1回出現する必要があります | / yah + oo /はyahooと一致します |
メタ文字をエスケープするために使用されます | /yahoo+.com/は、ドットをリテラル値として扱います | |
[…] | キャラクタークラス | /[abc]/ abcに一致 |
az | 小文字に一致します | / az /はクール、ハッピーなどにマッチします。 |
AZ | 大文字に一致します | / AZ /は、WHAT、HOW、WHYなどに一致します。 |
0-9 | 0から9までの任意の数値に一致します | / 0-4 /は0,1,2,3,4に一致します |
上記のリストは、正規表現で最も一般的に使用されるメタ文字のみを示しています。
ここで、電子メールアドレスの有効性をチェックするかなり複雑な例を見てみましょう。
<?php
$my_email = "This email address is being protected from spambots. You need JavaScript enabled to view it.";
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()が組み込まれています。
- メタ文字を使用すると、複雑なパターンを作成できます
Hope this helps!
Source link