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

再一次求解

$p = '/name:([\w\s]+)/';

$str = "name:steven jobs";

preg_match($p, $str, $match);

echo $match[1]; //结果为:steven jobs


$p = '/\w{4}\:\w{6}\s\w{4}/';

为什么 name :可以直接放上去呢?你看最后一行是我没看答案时写的。。。。。

还有就是最后echo $match[0]

$match[1] 这种是什么意思?



正在回答

2 回答

name:直接写上去是表示所匹配的必须含有name:这个字符串,后面接上正则([\w\s]+)

至于$match[]是一个数组,用来存储匹配成功的字符串,例如$match[0]所存储的就是整个正则表达式所匹配成功的字符串,而 $match[1]表示第一个括号子模式所匹配的字符串即([\w\s]+),$match[2]则表示第二个括号子模式所匹配的字符串

你写的那个就和题意有所不一致了......题目可能要求前面必须是有name:     你的正则的话abcd:steven jobs";这是可以过得,具体还看题意,可能理解不到位吧

说得不好望指正

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

_Day_Day_Up_ 提问者

非常感谢!
2016-02-18 回复 有任何疑惑可以回复我~
#2

_Day_Day_Up_ 提问者

那个:为什么不用加\,,是不是只有元字符要当做普通字符时才要加,:不是元字符,所以可以直接写上去?
2016-02-18 回复 有任何疑惑可以回复我~

对的,不然元字符本身有其他意义,加上\表转义,就把元字符当成文本了

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

_Day_Day_Up_ 提问者

xiexie
2016-02-18 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

再一次求解

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