【发布时间】:2017-05-19 19:25:14
【问题描述】:
我有一个大纲格式的文本文档,最多可以有 6 个级别。
.step1 -- step 1. text
..step2 -- step 1. A. text
..step2 -- step 1. B. text
..step2 -- step 1. C. text
..step2 -- step 1. D. text
..step2 -- step 1. E. text
.step1 -- step 2. text
..step2 -- step 2. A. text
...step3 -- step 2. A. (1) text
...step3 -- step 2. A. (2) text
.step1 -- step 3. text
我正在使用正则表达式解析文本文档并构建一个结构如下的数组
$contentsArray structure
'level' INT - the step level
'type' STRING - the type of tag, note, warning, step1, step2
'line' INT - the line number in the file
'text' STRING - the text
------ SAMPLE ARRAY -------
[0] => Array
(
[level] => 1
[type] => step1
[line] => 8
[text] => Step 1. text
)
[1] => Array
(
[level] => 2
[type] => step2
[line] => 10
[text] => Step 1. A. text
)
[2] => Array
(
[level] => 2
[type] => step2
[line] => 12
[text] => Step 1.B. text
)
[3] => Array
(
[level] => 2
[type] => step2
[line] => 14
[text] => Step 1. C. text.
)
[4] => Array
(
[level] => 2
[type] => step2
[line] => 16
[text] => Step 1. D. text.
)
[5] => Array
(
[level] => 2
[type] => step2
[line] => 18
[text] => Step 1. E. text.
)
[6] => Array
(
[level] => 1
[type] => step1
[line] => 20
[text] => Step 2. text
)
[7] => Array
(
[level] => 2
[type] => step2
[line] => 22
[text] => Step 2. A. Text.
)
[8] => Array
(
[level] => 3
[type] => step3
[line] => 26
[text] => Step 2. A. (1) Text.
)
[9] => Array
(
[level] => 3
[type] => step3
[line] => 28
[text] => Step 3. A. (2) Text.
)
[10] => Array
(
[level] => 1
[type] => step1
[line] => 30
[text] => Step 3. Text
)
最终目标是将其转换为嵌套的 XML 文档。
<step1>Step 1. text
<step2>Step 1. A. text</step2>
<step2>Step 1. B. text</step2>
<step2>Step 1. C. text</step2>
<step2>Step 1. D. text</step2>
<step2>Step 1. E. text</step2>
</step1>
<step1>Step 2. text
<step2>Step 2. A. text
<step3>Step 2. A. (1) text</step3>
<step3>Step 2. A. (2) text</step3>
</step2>
</step1>
<step1>Step 3. text
</step1>
我认为我需要构建一个嵌套数组,然后我可以将其转换为 XML。我认为这个数组的结构类似于
[0] => Array
(
[level] => 1
[type] => step1
[line] => 8
[text] => Step 1. text
), Array
(
[level] => 2
[type] => step2
[line] => 10
[text] => Step 1. A. text
), Array
(
[level] => 2
[type] => step2
[line] => 12
[text] => Step 1.B. text
), Array
(
[level] => 2
[type] => step2
[line] => 14
[text] => Step 1. C. text.
), Array
(
[level] => 2
[type] => step2
[line] => 16
[text] => Step 1. D. text.
), Array
(
[level] => 2
[type] => step2
[line] => 18
[text] => Step 1. E. text.
)
)
[1] => Array
(
[level] => 1
[type] => step1
[line] => 20
[text] => Step 2. text
, Array
(
[level] => 2
[type] => step2
[line] => 22
[text] => Step 2. A. Text.
, Array
(
[level] => 3
[type] => step3
[line] => 26
[text] => Step 2. A. (1) Text.
), Array
(
[level] => 3
[type] => step3
[line] => 28
[text] => Step 3. A. (2) Text.
)
)
)
[2] => Array
(
[level] => 1
[type] => step1
[line] => 30
[text] => Step 3. Text
)
我需要一些帮助来循环遍历我已构建的数组并使用level 值来找出最终数组中的嵌套。到目前为止,我的尝试毫无结果。我觉得有一种递归或迭代方式可以做到这一点,但这些不是我的强项。
感谢您的帮助,我希望这个问题足够清楚。
更新问题我发现我在提问方面做得很差,所以我做了一些修改。
【问题讨论】:
-
如果你使用 PHP,你应该用 'php' 标签标记问题
-
我在 PHP 中这样做,但对我来说这更像是一个技术问题。
-
您描述了一个具有 4 个属性的关联数组,但是您的输入中的“文本”部分在哪里,为什么您的数组只有一个“文本”属性而不是其他 3 个?