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

如何用正则表达式为数组键添加引号?支持CLI批量处理

可以用正则实现,附CLI批量处理命令

完全可以用正则表达式实现这个替换需求,下面是具体方案:

正则替换逻辑

我们需要匹配未被双引号包裹的数组键——也就是[xxx]格式中,[后无"、]前无"的内容,然后给键值前后加上双引号。

对应的正则替换规则:

  • 查找模式:\[([^"\]]+)\]
  • 替换模式:["$1"]

这个正则的作用:

  • \[ 匹配左方括号
  • ([^"\]]+) 捕获中间的键值,要求内容不包含双引号和右方括号(避免误处理已经加了引号的情况,比如["xxx"]不会被匹配)
  • \] 匹配右方括号
  • 替换时把捕获的键值用双引号包裹,再放回方括号中

CLI批量处理命令

要批量处理当前目录及子目录下的所有目标文件(比如PHP文件),可以用find结合perl命令实现原地修改,命令如下:

# 处理所有.php文件,如需其他后缀修改-name参数即可
find . -type f -name "*.php" -exec perl -pi -e 's/\[([^"\]]+)\]/["$1"]/g' {} \;

如果需要保留原文件备份(自动生成.bak后缀的备份文件),可以修改为:

find . -type f -name "*.php" -exec perl -pi.bak -e 's/\[([^"\]]+)\]/["$1"]/g' {} \;

命令说明

  • find . -type f -name "*.php":递归遍历当前目录下所有PHP文件
  • -exec perl ... {} \;:对每个找到的文件执行perl替换命令
  • -p:逐行处理文件内容并自动输出
  • -i:原地修改文件(加.bak则会保留原文件的备份)
  • -e:指定要执行的perl替换语句

测试你的示例代码:
原代码:

$alb_file = $row[a_name]."/".$row[i_filename]

执行命令后会变成:

$alb_file = $row["a_name"]."/".$row["i_filename"]

完全符合需求。

内容的提问来源于stack exchange,提问作者osomanden

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 04:18:16