我有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'
。
请帮助我使用正则表达式。
答案 0 :(得分:0)
不要使用正则表达式解析html文件。如果你想解决方案使用正则表达式,那么你可以尝试以下。
'~<item>.*?<id>((?:(?!<id>).)*?)</id>(?:(?!<item>).)*<img>(.*?)</img>.*?</item>~si'
(?:(?!<id>).)*?
任何字符的非贪婪匹配,但不是<id>
,零次或多次。