2015-05-25 4 views
0

У меня есть ответ XML, который имеет следующие узлы в немPhp получить значение из конкретного узла в 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. Как я могу получить идентификатор фильтра?

+0

Попробуйте это $ dbres-> webspace-> result -> {'filter-id'}; – Samir

+0

Позвольте мне попробовать ... Я отправлю вас через минуту. –

+0

@ Самир, ваше решение работает для меня .. Но вы не создали для этого ответа. Если вы создадите ответ, я буду рад принять его. –

ответ

1

Вы можете попробовать это:

$dbres->webspace->result->{'filter-id'}; 
+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; 
+0

первое решение работает с использованием скобок –

+0

@Illusion: вы можете проголосовать за мой ответ и пометить его как решение, если хотите. – Richard

+0

Я подтвердил ваш ответ, поскольку я уже отметил ответ Sameers. –

Смежные вопросы