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

来源:3-4 贪婪模式与懒惰模式

Ticvory

2016-11-06 23:06

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

  • yauby
    2016-11-07 01:38:29
    已采纳
    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啦

    Ticvor...

    非常感谢!解释的非常清楚

    2016-11-07 21:38:57

    共 1 条回复 >

  • yauby
    2016-11-08 15:59:05

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

PHP进阶篇

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

181728 学习 · 2575 问题

查看课程

相似问题