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

如何将逗号分隔的方括号包裹字符串转换为PHP二维数组

字符串转PHP二维数组的实现方案

嘿,我来帮你搞定这个字符串转PHP二维数组的需求,这是个很常见的字符串解析场景,这里有两种可靠的实现方式供你选择:

方法一:正则表达式提取(推荐,兼容性更强)

这种方法用正则精准提取每个方括号内的内容,就算后续输入格式有小变动(比如空格或特殊字符)也能稳定工作:

$input = "[2018-05-08][1][17],[2018-05-08][2][31],[2018-05-08][3][40],[2018-05-08][4][36],[2018-05-09][1][21]";

// 拆分每个条目
$entries = explode(',', $input);

// 遍历处理每个条目,提取子数组
$outputArray = array_map(function($entry) {
    // 匹配所有[xxx]格式的内容,捕获xxx部分
    preg_match_all('/\[([^\]]+)\]/', $entry, $matches);
    // 返回捕获到的三个值组成的数组
    return $matches[1];
}, $entries);

// 打印结果验证
print_r($outputArray);

运行这段代码后,$outputArray就是你想要的二维数组格式,输出和你期望的完全一致。

方法二:字符串替换拆分(简单直接,适合固定格式)

如果你的输入格式永远是[A][B][C]这种固定结构,也可以用字符串替换的方式快速处理:

$input = "[2018-05-08][1][17],[2018-05-08][2][31],[2018-05-08][3][40],[2018-05-08][4][36],[2018-05-09][1][21]";

$entries = explode(',', $input);
$outputArray = [];

foreach ($entries as $entry) {
    // 把所有[替换为空,]替换为逗号,再去除最后一个多余的逗号
    $cleaned = rtrim(str_replace(['[', ']'], ['', ','], $entry), ',');
    // 按逗号拆分得到子数组
    $outputArray[] = explode(',', $cleaned);
}

print_r($outputArray);

这种方法代码更直观,适合格式完全固定的场景,性能也略好一点。

两种方法都能得到你需要的结果,你可以根据自己的实际需求选择~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:38:43