Php从XML中的特定节点获取值

时间:2015-05-25 10:45:15

标签: php xml

我有一个xml响应,其中包含以下节点

$response = '<packet version="1.6.6.0">
  <webspace>
    <del>
      <result>
        <status>ok</status>
        <filter-id>14</filter-id>
        <id>14</id>
      </result>
    </del>
  </webspace>
</packet>';

我想在变量中获取节点<filter-id>的值。

我正在做以下事情,

$dbres = simplexml_load_string($response);
$filterid = $dbres->webspace->result->filter-id;
echo $filterid;

我收到错误unexpected T_OBJECT_OPERATOR,我认为在filter-id中显示了连字符“ - ”。我无法更改xml,因为它是来自API的响应。我怎样才能获得filter-id?

2 个答案:

答案 0 :(得分:2)

使用括号:

$dbres = simplexml_load_string($response);
$filterid = $dbres->webspace->result->{filter-id};
echo $filterid;

或投下它:

$dbres = simplexml_load_string($response);
$filterid = ((array) $dbres->webspace->result)['filter-id'];
echo $filterid;

或者 - 有点奇怪:

$dbres = simplexml_load_string(str_replace("filter-id", "filterid", $response));
$filterid = $dbres->webspace->result->filterid;
echo $filterid;

答案 1 :(得分:1)

你可以试试这个:

$dbres->webspace->result->{'filter-id'};