PHP - preg_replace 如何添加额外的“]”和额外的“[”

有没有办法用 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]


桃花长相依
浏览 136回答 2
2回答

慕运维8079593

几种可能性:该字符串是有效的 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);

千万里不及你

这可能会有所帮助,提取嵌套的数组值,然后按对分组。$newArray = array_chunk( array_column( $array, 0 ), 2 );
打开App,查看更多内容
随时随地看视频慕课网APP