这是正则表达式大师的问题。
如果我有一系列 xml 节点,我想解析出(使用正则表达式)与当前节点存在于同一级别的包含节点值。例如,如果我有:
<top-node>
Hi
<second-node>
Hello
<inner-node>
</inner-node>
</second-node>
Hey
<third-node>
Foo
</third-node>
Bar
<top-node>
我想检索一个数组:
array(
1 => 'Hi',
2 => 'Hey',
3 => 'Bar'
)
我知道我可以从
$inside = preg_match('~<(\S+).*?>(?P<inside>(.|\s)*)</\1>~', $original_text);
这将检索没有top-node
. 但是,下一步有点超出我的正则表达式能力。
编辑:实际上, preg_match 似乎只有在它们$original_text
都在同一行时才有效。此外,我认为我可以使用 apreg_split
和非常相似的正则表达式来检索我正在寻找的内容——它只是不能跨多行工作。
注意:我很感激并会答应任何澄清的要求;但是,我的问题非常具体,我的意思是我要问的,所以不要给出“去使用 SimpleXML”之类的答案。感谢您的任何帮助。