如何使用php preg_split分割字符串并保留所用分隔符的一部分?
我需要使用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}}
}
和{
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}}"
}