仅使用preg_match_all转换不带xml标签的字符串中具有多个反向引用的XML输出

问题描述 投票:-2回答:2

我们得到了这样的XML输出:

      <phone>
        <countryCode>+45</countryCode>
        <areaCode>354</areaCode>
        <subscriberNumber>1631616</subscriberNumber>
      </phone>

如何将其转换为以空格分隔的字符串:+45 354 1631616结果为preg_match_all

我有一个只能使用preg_match_all的应用程序(由于某些其他依赖性)。

我尝试了以下操作:

/\<phone\>\s+\<\D+\>(\+\d+)\<\/\D+\>\s+\<\D+\>(\d+)\<\/\D+\>\s+\<\D+\>(\d+)\<\/\D+\>\s+\<\/phone\>/i

这将产生3个结果:

Group 1: +45
Group 2: 354
Group 3: 1631616

因为有3个方括号'()'(我想我们谈论的是反向引用?]。>>

但是我只需要一组结果

Group 1: +45 354 1631616

与空格分隔。 preg_match_all(不是preg_replace)可以吗?如果没有空格,也可以。

感谢您的想法。

我们有这样的XML输出:+ 45

php regex xml phone-number
2个回答
0
投票

使用preg_match()preg_match_all(),您无法创建仅包含电话号码的匹配组。我认为,最好的解决方案是您已经写的东西,分为三个不同的小组。但是,如果您已经具有<phone>块,则可以使用strip_tags()功能,然后仅获得电话号码(以及标签之间的空格字符,如果有的话)。


0
投票

您正在询问如何配置特定软件。只是不告诉我们哪一个。这不是(PHP)编程问题。

© www.soinside.com 2019 - 2024. All rights reserved.