You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 12:37:33