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匹配到的文本啊。。。。。。