有没有办法用 preg_replace 或其他 php 代码做到这一点?我有一个看起来像这样的字符串:[[10],[11],[2],[3],[5],[1],[10],[15],[20],[21],[14],[16],[17],[6],[9],[4]]我想这样显示:[[10,11],[2,3],[5,1],[10,15],[20,21],[14,16],[17,6],[9,4]]所以我替换了“],[”部分 str_replace$xy1 = str_replace('],[', ',', $xy1);现在看起来像这样:[[10,11,2,3,5,1,10,15,20,21,14,16,17,6,9,4]]但是我需要在每个第二个数字之后添加一个额外的“]”,并在每个第二个逗号之后添加一个额外的 [ 例如:[[10,11],[2,3],[5,1]
2 回答
慕运维8079593
TA贡献1876条经验 获得超5个赞
几种可能性:
该字符串是有效的 JSON,无论它是否有意,因此您可以对其进行解码、对结果数组进行分块并重新编码。
$result1 = json_encode(array_chunk(array_column(json_decode($string),0),2));
如果您通过在以前的代码中生成字符串,json_encode那么array_chunk在那时使用会更好,但如果它来自其他来源,您显然不能这样做。
对于这个特定的字符串,将数字与正则表达式配对可能不那么麻烦。
$result2 = preg_replace('/(\d+)\D+(\d+)/', '$1,$2', $string);
或者两种方式的组合,提取所有数字,然后分块和编码。
preg_match_all('/\d+/', $string, $numbers);
$result3 = json_encode(array_chunk($numbers[0], 2), JSON_NUMERIC_CHECK);
千万里不及你
TA贡献1784条经验 获得超9个赞
这可能会有所帮助,提取嵌套的数组值,然后按对分组。
$newArray = array_chunk( array_column( $array, 0 ), 2 );
- 2 回答
- 0 关注
- 135 浏览
添加回答
举报
0/150
提交
取消