ホームページ > バックエンド開発 > PHPチュートリアル > phpの正規表現について詳しく見る

phpの正規表現について詳しく見る

墨辰丷
リリース: 2023-03-29 22:16:02
オリジナル
1157 人が閲覧しました

この記事では主に PHP の正規表現について詳しく説明します。興味のある方はぜひ参考にしてください。

phpの正規表現の共有:

1. 正規表現を作成します

$regex = '/d/i';
は、JavaScriptの最初の方法に少し似ています。ここの単語は文字列であるということです。

2. 正規表現の特殊文字 + * ? $ ( ) { } = : -

3.正規表現

の関数には、preg_matchとpreg_match_all、preg_replaceとpreg_replace_callback、preg_grep、preg_split、preg_last_error、preg_quoteの8つのメソッドがあります。

preg_match:

正規表現一致を実行

パターンの一致数

を返します。 preg_match() は最初の一致後に

検索を停止するため、その値は 0 回 (一致なし) または 1 回になります。

$subject = "dd133aa2";
$pattern = '/\d+/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
ログイン後にコピー
上記のコード例では、パラメータ「PREG_OFFSET_CAPTURE」を追加します。この場合、$matches にオフセット番号が 1 つ追加されます。たとえば、以下の「2」

preg_match_all:

「グローバル」正規表現一致を実行します

一致の完全な数 (おそらく 0) を返します。エラーが発生した場合は FALSE を返します。 。

次のコードでは、$subject と $pattern は上記と同じです。唯一の違いは、preg_match が preg_match_all に置き換えられていることです。

preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
ログイン後にコピー

返される回数は 2 で、一致するものが 2 つあります。配列 $matches の入力を見ると、2 つあります。上記にもう1つ。

preg_replace:

正規表現検索と置換を実行します

件名が配列の場合、preg_replace() は配列を返し、それ以外の場合は文字列を返します。

一致するものが見つかった場合は、置換された件名が返され、そうでない場合は、変更されていない件名が返されます。エラーが発生した場合は NULL が返されます。

コードでは、$subject は 2 つの文字列セットを含む配列です。次のステップは、複数の数値を大文字の「Z」に置き換えることです。

$subject = array("dd133aa2", "kk1ff3");
$pattern = '/\d+/';
$result = preg_replace($pattern, 'Z', $subject);
print_r($result);
ログイン後にコピー


preg_replace_callback:

「コールバック」を使用して正規表現検索と置換を実行します

関数の動作に加えて、指定することもできます置換の代わりにコールバックが置換文字列の計算を実行します。それ以外の場合は、返された結果を含めて preg_replace() と同等です。

次のコードも大文字の「Z」に置き換えられます。コールバック関数の各 $matches の内容は、コードのコメント部分です。1 回目は 133、2 回目は 2 です。

$subject = "dd133aa2";
$pattern = '/\d+/';
$result = preg_replace_callback($pattern, function($matches) {
    //$matches [0] => 133
    //$matches [0] => 2
    return 'Z';
   }, $subject);
print_r($result);
ログイン後にコピー

preg_grep:

パターンに一致する配列エントリを返します

入力内のキーを使用してインデックス付けされた配列

を返します。

以下のサンプルコードでは、数字を含まない $subject 配列に「ddsdfd」を追加しました。マッチングを行う際に、数字のないものを除外しました。

$result2 が出力するものはその逆で、フィルターされたものを出力しますが、キーは 0 ではなく 2 のままです。

$subject = array("dd133aa2", "kk1ff3", "ddsdfd");
$pattern = '/\d+/';
$result = preg_grep($pattern, $subject);
$result2 = preg_grep($pattern, $subject, PREG_GREP_INVERT);
print_r($result);
print_r($result2);
ログイン後にコピー

preg_split:


正規表現で文字列を分割します

返回一个使用 pattern 边界分隔 subject 后得到 的子串组成的数组。

下面代码中,我将$pattern中的表达式加了括号,为了在$result2中捕获到。

$subject = "dd133aa2cc";
$pattern = '/(\d+)/';
$result = preg_split($pattern, $subject);
$result2 = preg_split($pattern, $subject, null, PREG_SPLIT_DELIM_CAPTURE);
print_r($result);
print_r($result2);
ログイン後にコピー


preg_last_error:

返回最后一个PCRE正则执行产生的错误代码

preg_match(&#39;/(?:\D+|<\d+>)*[!?]/&#39;, &#39;foobar foobar foobar&#39;);
$result = preg_last_error();//PREG_BACKTRACK_LIMIT_ERROR 调用回溯限制超出
print_r($result);
ログイン後にコピー

preg_quote:

转义正则表达式字符

返回转义后的字符串

下面的代码中,$subject中有两个需要转义的字符,“.”和“?”。

将$result打印出后是“dd\.a\?a2cc”,而在$result2中,多加了个参数“a”,这样的话“a”也会被转义,“dd\.\a\?\a2cc”

$subject = "dd.a?a2cc";
$result = preg_quote($subject);
$result2 = preg_quote($subject, &#39;a&#39;);
print_r($result);
print_r($result2);
ログイン後にコピー

4、模式修正符

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐: 

PHP生成PDF文件的方法

PHP MPDF中文乱码如何解决

PHP判断手机是IOS还是Android的三个方法

以上がphpの正規表現について詳しく見るの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート