Я делаю вызов 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, но я не знаю, как это сделать.
Пожалуйста помоги.
При правильном определении 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) "Ä"
Других решений пока нет …