preg_match_all() 和 preg_match()

preg_match_all() 和 preg_match()

这个函数乍一看很好用,问题是你有想过其中的数据哪来?比如下面的代码:

<?php

$preg="(\w)(\?)";
$text="1v1?1?v?1";
$result=[];

preg_match_all("@{$preg}@",$text,$result);

其中的返回结果如下:

array (
  0 => 
  array (
    0 => '1?',
    1 => '1?',
    2 => 'v?',
  ),
  1 => 
  array (
    0 => '1',
    1 => '1',
    2 => 'v',
  ),
  2 => 
  array (
    0 => '?',
    1 => '?',
    2 => '?',
  ),
)

其中返回的数据格式为什么是3*3的?其中各个部分的作用是什么?


$result[0]返回的是所有匹配到的值,其中的$result[0][0]$result[0][1]等,就是匹配到的值。

然后$result[1]的正则则是(\w),所匹配的文本就是$result[0],所以$result[0][0]='1?';采用正则(\w)匹配到的结果就是1$result[1][1]$result[1][2]都是类似的。

$result[2]的正则则是(\?),同样匹配的文本是$result[0],所以所有匹配到的值都是?


那么preg_match()呢?其结果是:

array (
  0 => '1?',
  1 => '1',
  2 => '?',
)

对比$result其实就是$result[0][0]$result[1][0]$result[2][0]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值