为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
桃花长相依 2021-11-05 14:40:28
有没有办法用 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);


查看完整回答
反对 回复 2021-11-05
?
千万里不及你

TA贡献1784条经验 获得超9个赞

这可能会有所帮助,提取嵌套的数组值,然后按对分组。

$newArray = array_chunk( array_column( $array, 0 ), 2 );


查看完整回答
反对 回复 2021-11-05
  • 2 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信