これは正規表現の達人への質問です。
一連の 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);
そして、それはテキストを取得します sans top-node
. ただし、次のステップは私の正規表現の能力を少し超えています。
編集:実際には、その preg_match$original_text
は、すべてが同じ行にある場合にのみ機能するように見えます。さらに、非常によく似た正規表現で a を使用して、探しているものを取得できると思いますpreg_split
。複数の行で機能していません。
注: ご不明な点がございましたら、お気軽にお問い合わせください。ただし、私の質問はかなり具体的であり、私が求めていることを意味しているので、「SimpleXML を使用してください」などの答えを出さないでください。あらゆる支援に感謝します。