前回の記事では、正規表現の一部を簡単に紹介した「PHPの刺激的な正規表現の基礎(詳細図解)」をご紹介しましたが、今回は基礎知識として引き続き紹介していきます。正規表現の一般的な機能をいくつか見てみましょう。皆さんのお役に立てれば幸いです。
前の記事では、正規表現の基本的な定義と、正規表現を使用した preg_match()
関数の基本的なアプリケーションを紹介しました。目的は、シンプルな方法で強力な機能を実現することです。シンプル、効果的、強力にするために、正規表現のルールは複雑であり、正しく効果的な正規表現を構築することはさらに困難であるため、preg_match()
関数を 1 つだけ使用するだけでは十分ではありません。
正規表現は、テキスト データを処理する場合に重要かつ複雑なテクノロジです。一部のテキスト エディタでは、正規表現を使用して高レベルの「検索/置換」機能を実装することもあります。より多くの関数を実装したい場合は、より多くの関数の知識が必要になるため、次に、正規表現に関する関数の知識をさらに見てみましょう。
<strong>#preg_match_all()<span style="font-size: 18px;"></span></strong><strong><span style="font-size: 18px;"></span></strong>
##関数##preg_match()
preg_match() 関数によく似た関数もあります。 —
preg_match_all()、この関数は、正規表現に一致する文字列内のすべての結果を検索できます。
この関数の構文形式は次のとおりです:
preg_match_all($pattern, $subject [, &$matches [, $flags = PREG_PATTERN_ORDER [, $offset = 0 ]]])
##$pattern
は、対象となるパターンを表します。定義された正規表現です。
は検索する文字列を示します。$matches
は、オプションのパラメータがすべての一致を格納するために使用される多次元配列であることを示します配列は $flags
Specify によって並べ替えられます。$offset
はオプションのパラメーターを表し、$offset
はターゲット文字列内の指定された位置から検索を開始するために使用されます。 、単位はバイトです。 ##$flags はオプションのパラメータを表し、次のタグと組み合わせて使用できます。
##PREG_PATTERN_ORDER
結果は、$matches[0] は完全なパターンのすべての一致を保存し、$matches[1] は最初のサブグループのすべての一致を保存するというように並べ替えられます。 <strong></strong>
結果は、最初のものも含めて $matches[0] に並べ替えられます。 match 取得されたすべての一致 (サブグループを含む)、$matches[1] は 2 番目の一致で取得されたすべての一致 (サブグループを含む) を含む配列、などです。 <strong></strong>
$matches 内の各一致結果文字列要素が変更され、0 番目の要素が一致結果文字列で、最初の要素が件名内の一致結果文字列のオフセットになる一致結果文字列になることに注意してください。 . シフト量。 <strong></strong>
PREG_PATTERN_ORDER
。 次に、文字列を照合する例を通じて preg_match_all() 関数の応用を見てみましょう。例は次のとおりです:
<?php $subject = "abcdefghijkdefabcedfdefxyzdef"; $pattern_1 = '/(def)(abc)/'; $num_1 = preg_match_all($pattern_1, $subject, $matches_1,PREG_PATTERN_ORDER); echo "<pre class="brush:php;toolbar:false">"; var_dump($matches_1); var_dump($num_1); $pattern_2 = '/(def)(abc)/'; $num_2 = preg_match_all($pattern_2, $subject, $matches_2,PREG_OFFSET_CAPTURE, 3); var_dump($matches_2); var_dump($num_2); ?>
出力結果: 上記の例では、 preg_match_all() 関数による文字列のマッチングが完了しました。グローバル正規表現マッチングは、preg_match_all() 関数を適用することで完了できます。
preg_grep()
関数
<strong>正規表現を使用します。文字列の一致に加えて、配列内の要素の一致も可能です。 PHP の preg_grep() 関数は、配列内のすべての要素を検索し、正規表現に一致するすべての要素の配列を返すことができます。この関数の構文形式は次のとおりです。 <span style="max-width:90%"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">preg_grep($pattern, $input [, $flags = 0 ])</pre><div class="contentsignin">ログイン後にコピー</div></div></span> 注意すべき点は次のとおりです。 </strong>
$pattern
表示要搜索的模式,也就是定义好的正则表达式;$input
表示要搜索的数组;$flags
表示可选参数,可以设置为 PREG_GREP_INVERT
,这时函数会返回数组中与给定模式 $pattern
不匹配的元素组成的数组。perg_grep() 函数将遍历 $input 数组中的每一个元素,让该元素与模式 $pattern 进行匹配,然后将匹配成功或者匹配失败的元素返回。
接下来,我们通过示例来看一下使用 perg_grep() 函数匹配数组中的元素,示例如下:
<?php $test_arr = array( 'PHP中文网', 'http://www.php.cn/', 'php教程', 'abcdefg' ); $preg = '/^[a-z]/'; $preg_arr_1 = preg_grep($preg, $test_arr); $preg_arr_2 = preg_grep($preg, $test_arr, PREG_GREP_INVERT); echo '<pre class="brush:php;toolbar:false">'; var_dump($preg_arr_1); var_dump($preg_arr_2); ?>
输出结果:
上述示例便是通过preg_grep() 函数匹配数组中的元素。
大家如果感兴趣的话,可以点击《PHP视频教程》、《正则表达式手册》进行更多关于PHP和正则表达式知识的学习。
以上がPHP のグローバル正規表現マッチングおよび配列要素のマッチング (詳細な例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。