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

[不懂就要问]正则表达式输出用数组?

<?php
//请修改变量p的正则表达式,使他能够匹配str中的姓名
$p = '/\w{6}\s\w{4}/';
$str = "name:steven jobs";
preg_match($p, $str, $match);
echo $match[0]; //结果为:steven jobs

这是我写的,改了一下就对了,数组的键为0

<?php
//请修改变量p的正则表达式,使他能够匹配str中的姓名
$p = '/name:([\w\s]+)/';
$str = "name:steven jobs";
preg_match($p, $str, $match);
echo $match[1]; //结果为:steven jobs

这是教程给出的答案,数组的键为1

两个问题:

1    为什么要用数组才能输出?

2    为什么教程给出的用$match[1]?我的是[0]?

正在回答

2 回答

  1. 因为匹配的结果会存储在变量$match中,即preg_match($p, $str, $match)中的参数$match,而这个参数$match是一个数组。

  2. 因为你和教程的匹配方式不同,如果没有指明,匹配默认为贪婪模式,教程中的正则表达式明显有匹配name这个字符,匹配出的结果$match[0]为整个字符串"name:steven jobs",$match[1]才为steven jobs,而你的正则表达式则明显没有匹配name,所以当然$match[0]为steven jobs啦

3 回复 有任何疑惑可以回复我~
#1

Ticvory 提问者

非常感谢!解释的非常清楚
2016-11-07 回复 有任何疑惑可以回复我~

对你有帮助我就很开心了,建议你在学习每一节的时候看一下下面别人的评论,会有很大帮助

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

举报

0/150
提交
取消
PHP进阶篇
  • 参与学习       181734    人
  • 解答问题       2575    个

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

进入课程

[不懂就要问]正则表达式输出用数组?

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