web-dev-qa-db-ja.com

PHP preg_matchおよびpreg_match_all関数

preg_matchおよびpreg_match_all関数は、それらを使用する方法を実行します。

37
sikas

preg_matchは、最初の一致の検索を停止します。一方、preg_match_allは、文字列全体の処理が完了するまで検索を続けます。一致が見つかると、文字列の残りの部分を使用して、別の一致を試みます。

http://php.net/manual/en/function.preg-match-all.php

103
romaninsh

preg_match および preg_match_all PHPの関数はPerl互換の正規表現を使用します。

このシリーズを見て、Perl互換の正規表現を完全に理解できます。 https://www.youtube.com/watch?v=GVZOJ1rEnUg&list=PLfdtiltiRHWGRPyPMGuLPWuiWgEI9Kp1w

preg_match($ pattern、$ subject、&$ matches、$ flags、$ offset)

_preg_match_関数は、_$pattern_文字列内の特定の_$subject_を検索するために使用され、パターンが最初に検出されると、検索を停止します。 _$matches_で一致を出力します。ここで_$matches[0]_には完全なパターンに一致したテキストが含まれ、_$matches[1]_には最初にキャプチャされた括弧付きサブパターンに一致したテキストが含まれます。

preg_match()の例

_<?php
preg_match(
    "|<[^>]+>(.*)</[^>]+>|U",
    "<b>example: </b><div align=left>this is a test</div>",
    $matches
);

var_dump($matches);
_

出力:

_array(2) {
  [0]=>
  string(16) "<b>example: </b>"
  [1]=>
  string(9) "example: "
}
_

preg_match_all($ pattern、$ subject、&$ matches、$ flags)

_preg_match_all_関数は、文字列内のすべての一致を検索し、_$matches_に従って順序付けられた多次元配列(_$flags_)に出力します。 _$flags_値が渡されない場合、結果を並べ替えるので、_$matches[0]_は完全なパターン一致の配列、_$matches[1]_は最初のかっこで囲まれたサブパターンに一致する文字列の配列などになります。オン。

preg_match_all()の例

_<?php
preg_match_all(
    "|<[^>]+>(.*)</[^>]+>|U",
    "<b>example: </b><div align=left>this is a test</div>",
    $matches
);

var_dump($matches);
_

出力:

_array(2) {
  [0]=>
  array(2) {
    [0]=>
    string(16) "<b>example: </b>"
    [1]=>
    string(36) "<div align=left>this is a test</div>"
  }
  [1]=>
  array(2) {
    [0]=>
    string(9) "example: "
    [1]=>
    string(14) "this is a test"
  }
}
_
11
Sumit

具体例:

preg_match("/find[ ]*(me)/", "find me find   me", $matches):
$matches = Array(
    [0] => find me
    [1] => me
)

preg_match_all("/find[ ]*(me)/", "find me find   me", $matches):
$matches = Array(
    [0] => Array
        (
            [0] => find me
            [1] => find   me
        )

    [1] => Array
        (
            [0] => me
            [1] => me
        )
)

preg_grep("/find[ ]*(me)/", ["find me find    me", "find  me findme"]):
$matches = Array
(
    [0] => find me find    me
    [1] => find  me findme
)
6
Rebecca