【问题标题】:php parse xml with regular expression [duplicate]php用正则表达式解析xml [重复]
【发布时间】:2015-03-13 12:50:14
【问题描述】:

我有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 -> 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'

请帮我解决我的正则表达式

【问题讨论】:

  • 你应该在 PHP 中使用 XML 解析器来完成这个任务

标签: php regex xml


【解决方案1】:

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

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

DEMO

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

【讨论】:

  • 谢谢。并感谢这个网站 regex101.com。很有用
  • 是的,你可以玩那个..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
  • 1970-01-01
  • 2015-04-29
  • 1970-01-01
  • 2015-01-29
  • 2015-07-16
相关资源
最近更新 更多