从嵌套的Braces php创建树结构

时间:2012-05-20 19:54:03

标签: php tree

我正在寻找从带有嵌套大括号的字符串创建树结构。有没有人这样做过?具有代码折叠的源代码编辑器使用它。我想用PHP做,也许用正则表达式? 感谢

2 个答案:

答案 0 :(得分:1)

这显然取决于字符串的内容。 如果你很幸运,

json_decode(strtr($str, '{}', '[]'))

可能会奏效。幸运的意思是:你的字符串是一个有效的JSON数组,递归地包含除了对象之外的任何东西,所有方括号都用大括号替换,并且字符串中没有大括号。 E.g:

$str = '{3.14, null, {1, "two", 3}, {{"4.1 A", "4.1 B"}, 4.2}, true}'

另见http://www.json.org/

答案 1 :(得分:0)

解决方案是进行一些字符串处理以识别根节点的子树字符串,并递归地解析它们以创建最终树。

例如,如果具有嵌套大括号的根树字符串是这样的 " {1:AA {..孩子1 ..} {..孩子2 ..} {..孩子3 ..} ... {..孩子n ..}}",你可以首先识别子树字符串(子1到子n),然后递归地解析n个子字符串,直到构造最终的树结构。

您可以将此链接http://moderntone.blogspot.tw/2013/08/a-general-algorithm-for-creating-tree.html引用到博客文章中,该博客文章介绍了解决此类问题的一般概念/算法,该问题涉及使用嵌套大括号或圆括号从字符串创建树结构。