【发布时间】:2015-03-22 05:00:38
【问题描述】:
我将此作为字符串输入。
$str = '[2]Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vulputate cursus nulla, at rhoncus ante egestas vitae. [3]Cras euismod aliquet hendrerit. [3]Integer tortor lorem, suscipit a ante id, faucibus iaculis dolor. Sed aliquet, erat sit amet porta efficitur, eros lorem hendrerit purus, eget pellentesque lacus sapien ut dolor. [3]Donec eget accumsan velit. [4]Vestibulum consectetur enim in nunc fermentum lacinia. Maecenas fermentum rutrum sodales. Quisque vulputate, dolor tempus luctus cursus, massa urna ultrices odio, non dictum sem nulla ac mi. Quisque egestas tellus velit, non elementum lorem consequat id. Proin bibendum feugiat mollis. Sed vel odio neque. [4]Tempo. [2]Phasellus ut mauris purus. Quisque vel tortor erat. [2]Donec eget accumsan velit.';
我正在努力解决这个问题......
array (
[0] => array ( //First [2] and everything below
[0] => Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vulputate cursus nulla, at rhoncus ante egestas vitae.
[1] => array ( //[3]s that belong to first [2]
[0] => Cras euismod aliquet hendrerit. //First [3]
[1] => Integer tortor lorem, suscipit a ante id, faucibus iaculis dolor. Sed aliquet, erat sit amet porta efficitur, eros lorem hendrerit purus, eget pellentesque lacus sapien ut dolor. //Second [3]
[2] => array ( //Third [3] and everything below
[0] => Donec eget accumsan velit.
[1] => array (
[0] => Vestibulum consectetur enim in nunc fermentum lacinia. Maecenas fermentum rutrum sodales. Quisque vulputate, dolor tempus luctus cursus, massa urna ultrices odio, non dictum sem nulla ac mi. Quisque egestas tellus velit, non elementum lorem consequat id. Proin bibendum feugiat mollis. Sed vel odio neque.
[1] => Tempo.
)
)
)
[1] => Phasellus ut mauris purus. Quisque vel tortor erat. //Second [2]
[2] => Donec eget accumsan velit. //Third [2]
)
我已经尝试了我所知道的一切,并且可以找到@php.net 和其他任何地方,但是我已经花了大约六个小时来解决这个问题,但我仍然陷入困境。我尝试过explode、preg_replace、array_walk_recursive(以及explode),从最大的层次结构到更小的层次结构(迄今为止最好的结果),反之亦然,但没有。如何在 PHP 中将字符串转换为多维数组,通过字符串中的标签设置层次结构?
非常感谢!
【问题讨论】:
-
您需要递归地执行此操作:最初在
[2]上展开,然后 walk 在[3]上拆分生成的数组,在 @987654325 上遍历生成的数组拆分@ 等,直到您在进入下一个级别之前获得任何级别的空白 -
嗨,马克,感谢您的快速回答!每次我尝试爆炸时,我最终都会将第一个
[3]s 与父[2]放在同一数组级别。只有下面有[4]的[3]被转移(稍后,通过另一个爆炸)到较低的级别,导致同样的问题,只是在数组中更深。 -
我确实收到了关于你的答复的通知,马克,但现在似乎已经消失了。 @StackOverflow 出了什么问题?
-
问题在于第 2 层与子数组中后续层的逻辑不同,因此需要额外检查
标签: php multidimensional-array explode substr