2016-07-30 5 views
1

Я делаю вызов API с использованием PHP CURL по определенному URL-адресу. Я могу получить ответ в своем браузере.Как разобрать XML-код UTF-16, полученный из вызова API

CURL сохраняет этот ответ в переменной, как это:

$output = curl_exec($ch); 

Теперь, когда я использую

print_r(htmlspecialchars($output, true)); 

Я получаю ответ в моем браузере.

<?xml version="1.0" encoding="utf-16" standalone="no"?> 
<loginres> 
<sessiontoken>123456</sessiontoken> 
<timeout>7/30/2016 11:18:22 AM</timeout> 
<status>1</status> 
</loginres> 

Поскольку это UTF-16 кодированный ответ, я не в состоянии использовать SimpleXML или DOM документа. Вы можете попробовать это (я потерпел неудачу несколько раз). Ничего не приходит.

Кроме того, я пытался, чтобы использовать «взрывается» функцию с массивом фильтром, и ответ выглядит следующим образом:

Array 
(
[0] => version="1.0" 
[2] => encoding="utf-16" 
[3] => standalone="no"?> 


[5] => 123456 

[7] => 7/30/2016 
[8] => 11:26:09 
[9] => AM 

[11] => 1 

) 

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

Другой вариант - сохранить ответ в XML-файле на моем локальном сервере и использовать его с помощью JQuery, Ajax, но я не знаю, как это сделать. Пожалуйста, помогите.

ответ

0

Если правильно определено, DOM загрузит UTF-16 просто отлично. API все равно вернет UTF-8.

// create some xml string and convert it to utf-16 
$xml = iconv('utf-8', 'utf-16', '<?xml version="1.0" encoding="utf-16"?><foo>Ä</foo>'); 

// look an encoded special char and a BOM 
var_dump($xml); 

$document = new DOMDocument(); 
$document->loadXml($xml); 

// loaded just fine, here is the node content as UTF-8 
var_dump($document->documentElement->textContent); 

https://eval.in/614245 Выход:

string(104) "��<?xml version="1.0" encoding="utf-16"?><foo>�</foo>" 
string(2) "Ä" 
+0

Цель моего вопроса в том, чтобы обратиться за помощью, как использовать UTF-16 XML, полученный с помощью API ответа, в PHP. Я хотел создать переменные из XML-тегов и сделать манипуляции. Преобразование его на самом DOM будет жестким, поскольку я не контролирую сервер API. –

+0

Здесь нет разницы - выберите его с помощью file_get_contents() и загрузите в DOM. Если он не сломан, DOM загрузит его. – ThW