为什么我加了括号就输出2个了?

来源:3-5 使用正则表达式进行匹配

php_student

2015-10-24 07:12


<?php

$subject = "my email is spark@imooc.com";

//在这里补充代码,实现正则匹配,并输出邮箱地址

$patten = "/(\w+@\w+.com)/";

preg_match($patten,$subject,$matches);

print_r($matches);



Array
(
[0] => spark@imooc.com
[1] => spark@imooc.com
)

写回答 关注

1回答

  • pardon110
    2015-10-24 08:12:41
    已采纳

    preg_match 函数本身定义所决定。第一次是全匹配,第二次是第一个子模式匹配结果

    int preg_match    ( string $pattern   , string $subject   [, array &$matches   [, int $flags = 0   [, int $offset = 0  ]]] )

    搜索subject与pattern给定的正则表达式的一个匹配. 

    参数


    pattern

    要搜索的模式,字符串类型。

    subject

    输入字符串。

    matches

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

    flags

    flags可以被设置为以下标记值:

    PREG_OFFSET_CAPTURE

             如果传递了这个标记,对于每一个出现的匹配返回时会附加字符串偏移量(相对于目标字符串的)。          注意:这会改变填充到matches参数的数组,使其每个元素成为一个由          第0个元素是匹配到的字符串,第1个元素是该匹配字符串          在目标字符串subject中的偏移量。          

    offset

    通常,搜索从目标字符串的开始位置开始。可选参数 offset 用于      指定从目标字符串的某个未知开始搜索(单位是字节)。

    返回值

    preg_match()返回 pattern 的匹配次数。  它的值将是0次(不匹配)或1次,因为preg_match()在第一次匹配后  将会停止搜索。

PHP进阶篇

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

181732 学习 · 2575 问题

查看课程

相似问题