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

如何用PHP preg_replace正则为逗号分隔键值对的键加引号?

解决PHP中为逗号分隔键值对的键添加引号的问题

你的核心需求是给逗号分隔的键值对中每个=前的键添加单引号,原正则表达式存在语法错误且逻辑不匹配,以下是正确的实现方案:

正确的正则表达式与代码实现

使用如下正则可以精准匹配所有键(包括字符串开头的键和逗号后的键):

$str = "f1=1,f2='2',f3='a',f4=4,f5='5'";
// 正则匹配开头或逗号后的键,替换为带单引号的形式
$newstr = preg_replace('/(^|,)([^=,]+)=/', '$1\'$2\'=', $str);
echo $newstr;

执行后输出结果:

'f1'=1,'f2'='2','f3'='a','f4'=4,'f5'='5'

正则表达式解析

  • (^|,):捕获组1,匹配字符串开头或者逗号,确保能定位每个键的起始位置(开头的键无前缀逗号,中间的键前有逗号)
  • ([^=,]+):捕获组2,匹配一个或多个不是等号和逗号的字符,精准提取键的内容
  • =:匹配键后的等号,确保只处理键值对的键部分

健壮性优化(可选)

如果键和等号之间可能存在空格(比如f1 = 1),可以调整正则兼容这种情况:

$newstr = preg_replace('/(^|,)([^=,]+)\s*=/', '$1\'$2\'=', $str);

这里的\s*会匹配0个或多个空白字符,保证键和等号间有空格时也能正确匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:55:15