为了账号安全,请及时绑定邮箱和手机立即绑定

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


<?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 回答

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()在第一次匹配后  将会停止搜索。

2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信