php捕获组

php捕获组,php,preg-match,regex-group,Php,Preg Match,Regex Group,我被困在用php捕捉一组preg_match 这是我的模式: <ns2:uniqueIds>(.*)<\/ns2:uniqueIds> 这就是来源: <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header/><env:Body><ns2:ListResponse xmlns:ns2="http://censored"><

我被困在用php捕捉一组preg_match

这是我的模式:

<ns2:uniqueIds>(.*)<\/ns2:uniqueIds>
这就是来源:

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header/><env:Body><ns2:ListResponse xmlns:ns2="http://censored"><ns2:uniqueIds>censored</ns2:uniqueIds><ns2:uniqueIds>censored</ns2:uniqueIds></ns2:ListResponse></env:Body></env:Envelope>

我遗漏了什么?

您可能应该改用,以使调用Web服务以及作为PHP本机数据类型获取结果变得更容易


使用正则表达式解析XML或HTML通常是一个非常糟糕的主意。

您可能应该改用,以使调用Web服务以及将结果作为PHP本机数据类型变得更容易


使用正则表达式来解析XML或HTML通常是一个非常糟糕的主意。

虽然我同意上面的人告诉您不要使用正则表达式来解析XML,但我可以理解为什么您这样做只是为了获取一些价值。这就是我如何使它工作的:

PHP解释器示例:

我对您的模式所做的唯一更改是使用了惰性量词*?而不仅仅是贪婪

资料来源:

关于懒惰重复的东西:
虽然我同意上面的人告诉您不要使用正则表达式来解析XML,但我可以理解为什么您这样做只是为了获取一些价值。这就是我如何使它工作的:

PHP解释器示例:

我对您的模式所做的唯一更改是使用了惰性量词*?而不仅仅是贪婪

资料来源:

关于懒惰重复的东西:
每次有人用正则表达式解析XML,都会让baby Jesus哭泣。cletus用simplexml_load_string或调用的任何函数解析XML,都让我失败。努索普让我失望了。内置的php soap让我失望。每次有人用正则表达式解析XML时,它都会让baby Jesus哭泣。cletus用simplexml\u load\u string或任何调用该函数的方法解析XML时,我都失败了。努索普让我失望了。内置的php soap让我失望。我看不出还有其他选择,因为它不起作用。服务器有问题,我无法访问它。你能告诉我我做错了什么吗?因为它不起作用。服务器有问题,我无法访问它。你能告诉我我做错了什么吗?我同意他们的看法。但正如我所说,所有其他选择都让我失望。但是如果有人可以解析这个xml字符串并获得标记名“value”的值,我很乐意使用它。没有工作吗?哦,如果你对一个以上的唯一ID感兴趣,你应该使用preg_match_all。你为什么接受我的答案,然后。。。不接受吗?有些东西不管用?我同意他们的看法。但正如我所说,所有其他选择都让我失望。但是如果有人可以解析这个xml字符串并获得标记名“value”的值,我很乐意使用它。没有工作吗?哦,如果你对一个以上的唯一ID感兴趣,你应该使用preg_match_all。你为什么接受我的答案,然后。。。不接受吗?有什么不起作用的吗?
php > $s = '<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header/><env:Body><ns2:ListResponse xmlns:ns2="http://censored"><ns2:uniqueIds>censored</ns2:uniqueIds><ns2:uniqueIds>censored</ns2:uniqueIds></ns2:ListResponse></env:Body></env:Envelope>';
php > $p = '#<ns2:uniqueIds>(.*?)<\/ns2:uniqueIds>#i';
php > $a = array();
php > preg_match($p, $s, $a);
php > print_r($a);
Array
(
    [0] => <ns2:uniqueIds>censored</ns2:uniqueIds>
    [1] => censored
)