按任何块内的最后一个匹配字符进行爆炸


explode by the last match character inside any block

众所周知,爆炸适用于与结果匹配的任何字符。

我想做同样的效果,但对于最后一个元素,匹配内部块。

例如

$explodeMe = ' [ [ [ 1, 2, 3, 4 ] ] ] , [ [ [ 5 , 6, 7, 8 ] ] ]';
$explodeMe = explode( ']' , $explodeMe);

//这将爆炸$explodeMe 6次(每]个字符(

我想为每个块分解它(在该示例中为2次([[[]]] [[[]]]

所以:

如果区块被1个[ (.*) ]打开,它将用第一个]将其炸开

如果区块被2个[[ (.*) ]]打开,它将用第二个]将其炸开

如果区块被3个[[[ (.*) ]]]打开,它将用第三个]将其炸开

可能是一个计算[[[字符的函数,并根据该值查找最后一个

]]]
  ^

这是没有函数的语法:

$explodeMe = explode( myFuntionToLookForTheLastElementForEachBlock(']') , $explodeMe);

有什么想法吗?

我觉得你想解析这个结构化数据的字符串,并从中构建一个多级数组。你给了我们一个想要"爆炸"的数据的例子,在这种情况下,它有点像JSON。

如果您确信必须处理的所有数据都是这样的,那么读取这些数据的最简单方法可能是json_decode('['.$explodeMe.']', true),并从那里进一步处理生成的数组。