使用PCRE2正则表达式为PHP脚本补全strlen函数空值默认处理
需求:为PHP无空值默认处理的
strlen调用添加 ?? '' 需要给PHP中未包含 ?? ''的strlen函数调用添加该空值默认处理,计划在VS Code中通过正则捕获组,将匹配到的内容替换为strlen($1 ?? '')。
测试文本
$strStatement2 = substr($strStatement3, strlen('my capture group')); # 需匹配`strlen('my capture group')`,捕获组为`'my capture group'` $strStatement2 = substr($strStatement3, 0, strlen('my capture group') - 1); # 需匹配`strlen('my capture group')`,捕获组为`'my capture group'` $strStatement2 = strlen($doNotWantAMatch ?? '') != strlen('my capture group'); # 不匹配第一个含` ?? ''`的`strlen`,需匹配第二个`strlen('my capture group')`
尝试过的正则方案
strlen\((?:(?! ?? '')(.))+\)(启用/gm模式):可忽略含?? ''的strlen,但匹配结果不正确;strlen\((?:(?! ?? '')(.+?))\):能得到捕获组,但无法忽略strlen($strStatement3 ?? '');strlen\(.*?(?: \?\? '')\)|strlen\((.+?)\):可得到目标捕获组,但会匹配到不需要的strlen($doNotWantAMatch ?? '')。
最终解决方案
采用正则表达式:strlen\(((?:[^)](?!\?\? ''))+\),用于适配PHP8.1(strlen传入null已被弃用),完成旧代码的版本兼容升级。
内容的提问来源于stack exchange,提问作者w. Patrick Gale
相关产品推荐
相关产品推荐

