如何使用php preg_split分割字符串并保留所用分隔符的一部分?

如何使用php preg_split分割字符串并保留所用分隔符的一部分?,php,regex,Php,Regex,我需要使用preg_split通过使用“};{”作为分隔符来拆分下面的字符串。但是我希望在返回的数组中保留/返回}和{ Regex可以做这么多,但不知道使用preg_split是否可能做到这一点 {'aid':10,'aSL'{'ac':true,'g_ac':true,'stats':0,'ldb':0,'g_':0},'hs':'4.8','l_p':1229241600},{'aid':80,'aSL':{'ac':0,'g_ac':0,'stats':0,'ldb':0,'g_':0}}

我需要使用preg_split通过使用“};{”作为分隔符来拆分下面的字符串。但是我希望在返回的数组中保留/返回
}
{

Regex可以做这么多,但不知道使用preg_split是否可能做到这一点

{'aid':10,'aSL'{'ac':true,'g_ac':true,'stats':0,'ldb':0,'g_':0},'hs':'4.8','l_p':1229241600},{'aid':80,'aSL':{'ac':0,'g_ac':0,'stats':0,'ldb':0,'g_':0}},{'aid':100,'aSL':{'ac':0,'g_ac':0,'stats':0,'ldb':0,'g_':0}},{'aid':30,'aSL':{'ac':true,'g_ac':true,'stats':0,'ldb':0,'g_':0}},{'aid':40,'aSL':{'ac':0,'g_ac':0,'stats':0,'ldb':0,'g_':0}},{'aid':60,'aSL':{'ac':true,'g_ac':true,'stats':0,'ldb':0,'g_':0}}
我希望它像这样回来

[0] => {'aid':10,'aSL':{'ac':true,'g_ac':true,'stats':0,'ldb':0,'g_':0},'hs':'4.8','l_p':1229241600}
[1] => {'aid':80,'aSL':{'ac':0,'g_ac':0,'stats':0,'ldb':0,'g_':0}
[2] => {'aid':100,'aSL':{'ac':0,'g_ac':0,'stats':0,'ldb':0,'g_':0}
[3] => {'aid':30,'aSL':{'ac':true,'g_ac':true,'stats':0,'ldb':0,'g_':0}
[4] => {'aid':40,'aSL':{'ac':0,'g_ac':0,'stats':0,'ldb':0,'g_':0}
[5] => {'aid':60,'aSL':{'ac':true,'g_ac':true,'stats':0,'ldb':0,'g_':0}

要在拆分序列中不包含
}
{,可以使用:


(?您可以使用正则表达式“向后看”和“向前看”:

<?php

$string = "{'aid':10,'aSL'{'ac':true,'g_ac':true,'stats':0,'ldb':0,'g_':0},'hs':'4.8','l_p':1229241600},{'aid':80,'aSL':{'ac':0,'g_ac':0,'stats':0,'ldb':0,'g_':0}},{'aid':100,'aSL':{'ac':0,'g_ac':0,'stats':0,'ldb':0,'g_':0}},{'aid':30,'aSL':{'ac':true,'g_ac':true,'stats':0,'ldb':0,'g_':0}},{'aid':40,'aSL':{'ac':0,'g_ac':0,'stats':0,'ldb':0,'g_':0}},{'aid':60,'aSL':{'ac':true,'g_ac':true,'stats':0,'ldb':0,'g_':0}}";

$matches = preg_split('/(?<=}),(?={)/', $string);

var_dump($matches);

这基本上是一个json字符串。为什么不把它当作json来处理,并解码成一个本机结构。提取你想要的任何比特并从中重新编码到json会容易得多。是的,这就是我最终使用json_解码的方式,但仍然非常好奇在使用preg_split或类似的方法时如何保留部分分隔符。而且,它值得一试ning,对于一个2“的情况,可以一个接一个地发生(我们不假设它是上面提到的JSON,而是任何字符串,比如:
},,,,,,{x},{y},,{
),我们需要使用
(?)?
array(6) {
  [0]=>
  string(92) "{'aid':10,'aSL'{'ac':true,'g_ac':true,'stats':0,'ldb':0,'g_':0},'hs':'4.8','l_p':1229241600}"
  [1]=>
  string(59) "{'aid':80,'aSL':{'ac':0,'g_ac':0,'stats':0,'ldb':0,'g_':0}}"
  [2]=>
  string(60) "{'aid':100,'aSL':{'ac':0,'g_ac':0,'stats':0,'ldb':0,'g_':0}}"
  [3]=>
  string(65) "{'aid':30,'aSL':{'ac':true,'g_ac':true,'stats':0,'ldb':0,'g_':0}}"
  [4]=>
  string(59) "{'aid':40,'aSL':{'ac':0,'g_ac':0,'stats':0,'ldb':0,'g_':0}}"
  [5]=>
  string(65) "{'aid':60,'aSL':{'ac':true,'g_ac':true,'stats':0,'ldb':0,'g_':0}}"
}