我有这个作为字符串输入。
$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以及其他任何地方,但是我花了大约六个小时的时间,但仍然遇到问题。我尝试过爆炸,preg_replace,array_walk_recursive(以及爆炸),从最大的层次结构到较小的层次结构(到目前为止最好的结果),反之亦然,但是什么也没有。如何在PHP中将字符串转换为多维数组,并通过字符串中的标签设置层次结构?
非常感谢!
这段代码
$str = '<your_string>';
function stringToArray($str, $delimiter = 2, $isFirst = false) {
$delimiterStr = "[{$delimiter}]";
$outArr = array();
if (strpos($str,$delimiterStr)!==false) {
$outArr = explode($delimiterStr, $str);
$isFirstElement = true;
$tempArr = array();
$key = 0;
foreach ($outArr AS $v) {
if (!empty($v))
{
if ($isFirstElement) {
$tempArr[$key] = stringToArray($v, $delimiter+1);
$key++;
} else {
$tempArr[$key][] = stringToArray($v, $delimiter+1);
}
}
$isFirstElement = false;
}
$outArr = $tempArr;
}
if (!$outArr) {return trim($str);} else {return $outArr;}
}
$elements = stringToArray($str);
print_r($elements[0]);
将返回
Array
(
[0] => Array
(
[0] => Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vulputate cursus nulla, at rhoncus ante egestas vitae.
[1] => Array
(
[0] => Cras euismod aliquet hendrerit.
[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.
[2] => Array
(
[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.
[2] => Donec eget accumsan velit.
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句