Как проанализировать UTF-16 XML, полученный от вызова API

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

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, но я не знаю, как это сделать.
Пожалуйста помоги.

1

Решение

При правильном определении 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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]