Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php用正则表达式解析xml_Php_Regex_Xml - Fatal编程技术网

php用正则表达式解析xml

php用正则表达式解析xml,php,regex,xml,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>

我有一个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>

1.
标题1
2.
标题2
3.
标题3
img3
我只需要解析带有“img”的元素,并得到“id->img”。我使用正则表达式

preg_match_all('~<item>.*?<id>(.*?)</id>.*?<img>(.*?)</img>.*?</item>~si', $source, $result);
preg_match_all(“~.*?(.*?).*(.*?.*?).*(.*?).*si',$source,$result);
我得到了
“id”=“1”和“img”=“img3”,但我需要“id”=“3”和“img”=“img3”


请帮助我使用正则表达式

不要用正则表达式解析html文件。如果你想使用正则表达式,你可以试试下面的方法

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


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

您应该使用PHP中的XML解析器完成此任务谢谢。感谢您访问这个网站regex101.com。非常有用是的,你可以玩这个。。