php中函数preg_match或preg_match_all 第三个参数$match的解释

理解自:http://www.cnblogs.com/vicenteforever/articles/1623137.html

php手册中是这样解释的

matches

如果提供了参数matches,它将被填充为搜索结果。 $matches[0]将包含完整模式匹配到的文本, $matches[1] 将包含第一个捕获子组匹配到的文本,以此类推

到底是什么意思呢?

$matchs[0]很好理解,就是整个$pattern 匹配的文本,

$matchs[1]包含第一个捕获子组匹配到的文本,

列子:

$pattern = '/^(http://)?([^/]+)/i';
$subject = 'http://www.php.net/index.html';
preg_match_all($pattern,$subject,$match);
var_dump($match);

输出

array (size=3)
  0 => 
    array (size=1)
      0 => string 'http://www.php.net' (length=18)
  1 => 
    array (size=1)
      0 => string 'http://' (length=7)
  2 => 
    array (size=1)
      0 => string 'www.php.net' (length=11)

数组中第一个$matchs[0]就是整个$pattern匹配到的文本元素

$matchs[1] 匹配到的是子组 (http://) 匹配到的文本

$matchs[2] 匹配到的是子组(^/+) 匹配到的文本

理解了么?

我是理解了

$matches[1] 将包含第一个捕获子组匹配到的文本。。。

就真的是第一个子组  也就是()中pattern匹配到的文本啊。。。。。。

原文地址:https://www.cnblogs.com/tumio/p/5390268.html