Php preg_匹配不适用于7.1.11,但适用于其他版本

Php preg_匹配不适用于7.1.11,但适用于其他版本,php,preg-match,Php,Preg Match,我有一些代码,它在PHP7.1.11上不工作,但在其他版本上工作,为什么 结果是: 7.1.11 >>> $final_pattern = "/^(?:(?:33|55|81)\d{8}|(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-6][1-9]|[37][1-8]|8[1-35-9

我有一些代码,它在PHP7.1.11上不工作,但在其他版本上工作,为什么

结果是:

7.1.11

>>> $final_pattern = "/^(?:(?:33|55|81)\d{8}|(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-6][1-9]|[37][1-8]|8[1-35-9]|9[2-689])|5(?:88|9[1-79])|6(?:1[2-68]|[234][1-9]|5[1-3689]|6[12457-9]|7[1-7]|8[67]|9[4-8])|7(?:[13467][1-9]|2[1-9]|5[13-9]|8[1-69]|9[17])|8(?:2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))\d{7})/ui"
=> "/^(?:(?:33|55|81)\d{8}|(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-6][1-9]|[37][1-8]|8[1-35-9]|9[2-689])|5(?:88|9[1-79])|6(?:1[2-68]|[234][1-9]|5[1-3689]|6[12457-9]|7[1-7]|8[67]|9[4-8])|7(?:[13467][1-9]|2[1-9]|5[13-9]|8[1-69]|9[17])|8(?:2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))\d{7})/ui"
>>> $search=9381392375
=> 9381392375
>>> preg_match($final_pattern, $search, $groups, 256);
=> 0
>>> $groups
=> []
>>> preg_match($final_pattern, $search, $groups);
=> 0
>>> $groups
=> []
>>>
7.1.27

>>> $final_pattern = "/^(?:(?:33|55|81)\d{8}|(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-6][1-9]|[37][1-8]|8[1-35-9]|9[2-689])|5(?:88|9[1-79])|6(?:1[2-68]|[234][1-9]|5[1-3689]|6[12457-9]|7[1-7]|8[67]|9[4-8])|7(?:[13467][1-9]|2[1-9]|5[13-9]|8[1-69]|9[17])|8(?:2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))\d{7})/ui"
=> "/^(?:(?:33|55|81)\d{8}|(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-6][1-9]|[37][1-8]|8[1-35-9]|9[2-689])|5(?:88|9[1-79])|6(?:1[2-68]|[234][1-9]|5[1-3689]|6[12457-9]|7[1-7]|8[67]|9[4-8])|7(?:[13467][1-9]|2[1-9]|5[13-9]|8[1-69]|9[17])|8(?:2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))\d{7})/ui"
>>> $search=9381392375
=> 9381392375
>>> preg_match($final_pattern, $search, $groups, 256);
=> 1
>>> $groups                                                                                                                            => [
     [
       "9381392375",
       0,
     ],
   ]
>>>
守则:

[代码><码码><码>最后一个大概大概大概大概是:::((:33 | 55 | 55 | 81 {8}124; (::::::::::::::::::::::::::::::::::::0[0[01[0[01[01[1-0[1-1[1-1-9[1-1[1-9[1-1-1-1-9[1[1-9[1-1-1-1-9[1[1[1-1-1-9]1-1-9[1[1[1[1-1-1-9]1-1-1-1-9[1[1[1[1[1-1-9[1[1[1-1-9[1[1-1-1-9[1-1-1-9]35-9[2-689]| 5(?:88 | 9[1-79])| 6(?:1[2-68]|[234][1-9]| 5[1-3689]| 6[12457-9]| 7[1-7]| 8[67]| 9[4-8])| 7(?[13467][1-9]| 2[1-9]1245[13-9]1248[1-69]1248][1-6]| 4[124-6]| 6[1246-9]| 7[1-378]| 9[12479]| 9(?:1[346-9]| 2[1-4]| 3[2-46-8]| 5[1348]|[69][1-9]| 7[12]| 8[1-8])\d{7})/ui” $search=9381392375 预匹配($final_pattern,$search,$groups,256);
有人能帮我吗?

你能为7.1.1提供preg_last_error()吗?因为在关于pcre的version diff中只发现了一个bug报告-@myxaxa,我看到了bug问题,我如何解决这个问题,只需升级php版本就可以了?好吧,是的:)如果它能工作-为什么不能?:)也许升级到7更好。3@myxaxa好的,您可以提供preg\u last\u error()吗对于7.1.1?因为在关于pcre的version diff中只发现了一个bug报告-@myxaxa,我看到了bug问题,我如何解决这个问题,只需升级php版本就可以了?嗯,是的:)如果它可以工作-为什么不可以?:)升级到7可能更好。3@myxaxa好的,谢谢