2015-11-02 3 views
0

есть вопрос о получении значения из простого объекта XML. Так что, во-первых, я делаю этоPHP SimpleXML получить значение из объекта

$data = $xml->children('SOAP-ENV', true)->Body->children()->ExecuteQueryResponse->pdomOutput->recipient->attributes()->email; 
var_dump($data); 

И возвращает следующее

object(SimpleXMLElement)#8 (1) { 
    [0]=> 
    string(26) "[email protected]" 
} 

мне нужен только адрес электронной почты от этого. Так что я тогда поступлю это

$this->response = (string)$data[0]; 
var_dump($this->response); 

Теперь я ожидал бы выше, чтобы возвращать только адрес электронной почты, но вместо этого, он возвращает все, в том числе типа, например,

string(26) "[email protected]" 

Я могу легко получить адрес электронной почты из этого, используя что-то вроде preg_match, но, конечно, это не путь? Невозможно ли получить значение без типа?

Благодаря

+1

Что значит тип? Вы пытались использовать echo вместо var_dump? – Epodax

+0

Я фактически возвращал всю ценность, и мне не нравилось, что я делаю это, не повторяя ее (из-за ajax). Кажется, теперь работает –

+0

[var_dump] (http://php.net/manual/en/function.var-dump.php) делает то, что он должен делать, он показывает вам тип и длину и содержание переменная. Пока эхо «просто» показывает содержимое. – Epodax

ответ

1

Если вы просто хотите иметь строку, SimpleXML имеет __toString()function for SimpleXMLElements. Таким образом, с вашим кодом это будет:

$data = $xml->children('SOAP-ENV', true)->Body->children()->ExecuteQueryResponse->pdomOutput->recipient->attributes()->email; 
$this->response = $data[0]->__toString(); 
Смежные вопросы