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

PHP如何将特定键值格式字符串转为关联数组(保留逗号)

实现PHP键值对字符串转关联数组的方法

你遇到的问题是:直接将类似数组语法的字符串传入array(),只会把整个字符串当作数组的单个元素,无法得到期望的关联数组。下面提供几种可行的实现方式:

方法1:正则表达式解析(安全推荐)

这种方法无需执行代码,安全性更高,适配固定格式的目标字符串:

$string = "'id_konversi_aktivitas' => 'f4d943e7', 'nim' => '180218038'";
// 匹配单引号包裹的键和值
$pattern = "/'([^']+)' => '([^']+)'/";
preg_match_all($pattern, $string, $matches);

// 将匹配到的键和值组合成关联数组
$result = array_combine($matches[1], $matches[2]);
print_r($result);

执行后输出结果:

Array
(
    [id_konversi_aktivitas] => f4d943e7
    [nim] => 180218038
)

方法2:转换为JSON格式后解码

通过字符串替换将目标格式转为JSON,再用json_decode解析:

$string = "'id_konversi_aktivitas' => 'f4d943e7', 'nim' => '180218038'";
// 替换单引号为双引号,替换=>为JSON的键值分隔符:
$jsonStr = str_replace(["'", "=>"], ['"', ':'], $string);
// 包裹成标准JSON对象格式
$jsonStr = "{" . $jsonStr . "}";

$result = json_decode($jsonStr, true);
print_r($result);

这种方法操作简单,但要确保字符串内没有额外的单引号或特殊字符,否则可能解析失败。

方法3:使用eval(注意安全风险)

如果字符串来源完全可信(比如自己生成的固定内容),可以直接用eval执行代码:

$string = "'id_konversi_aktivitas' => 'f4d943e7', 'nim' => '180218038'";
eval("\$result = array($string);");
print_r($result);

⚠️ 重要提醒:eval会执行传入的任意代码,如果字符串来自用户输入或不可信来源,绝对不能使用这种方法,会引发严重的安全漏洞。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:50:29