如何将逗号分隔的方括号包裹字符串转换为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
相关产品推荐
相关产品推荐

