脚本宝典收集整理的这篇文章主要介绍了PHP 7子版本 – REGEX行为的差异?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
$my_str = ' Rollo is* My dog* And he\'s very* Lovely* '; preg_match_all('/\S+(?=\*$)/m',$my_str,$end_words); PRint_r($end_words);
Array ( [0] => Array ( ) )
而在PHPFiddle,在PHP 7.0.33上,我得到了我的预期:
Array ( [0] => Array ( [0] => is [1] => dog [2] => very [3] => Lovely ) )
任何人都可以告诉我为什么我得到这个差异,是否在7.0.33之后的REGEX行为发生了变化?
您可以使用PCRE(* ANYCRLF)动词修复它:
'~(*ANYCRLF)\S+(?=\*$)~m'
(* ANYCRLF)指定换行约定:(* CR),(* LF)或(* CRLF),等同于PCRE_NEWLINE_ANY选项.见PCRE documentation:
最后,这个PCRE动词启用.匹配任何字符但是CR和LF符号和$将在这两个字符之前匹配.
在rexegg.com查看有关此动词和其他动词的更多信息:
以上是脚本宝典为你收集整理的PHP 7子版本 – REGEX行为的差异?全部内容,希望文章能够帮你解决PHP 7子版本 – REGEX行为的差异?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。