php用正则表达式解析xml

时间:2015-01-15 06:54:52

标签: php regex xml

我有xml文件:

<set>
<item>
    <id>1</id>
    <title>title1</title>
</item>
<item>
    <id>2</id>
    <title>title2</title>
</item>
<item>
    <id>3</id>
    <title>title3</title>
    <img>img3</img>
</item> 
</set>

我只需用“img”解析元素并获取“id - &gt; img”。我使用正则表达式

preg_match_all('~<item>.*?<id>(.*?)</id>.*?<img>(.*?)</img>.*?</item>~si', $source, $result);

我得到"id" = '1' and "img" = 'img3', but i need "id" = '3' and "img" = 'img3'

请帮助我使用正则表达式

1 个答案:

答案 0 :(得分:0)

不要使用正则表达式解析html文件。如果你想解决方案使用正则表达式,那么你可以尝试以下。

'~<item>.*?<id>((?:(?!<id>).)*?)</id>(?:(?!<item>).)*<img>(.*?)</img>.*?</item>~si'

DEMO

(?:(?!<id>).)*?任何字符的非贪婪匹配,但不是<id>,零次或多次。