Intereting Posts
Использование cURL и simpleXMLElement для извлечения данных. Как получить значение элемента XML после XPATH? Это правильный способ отправить электронную почту с помощью PHP? Регистрация / выход в систему посещаемости с использованием codeigniter Как я могу отправить запрос ajax в файл php-файла контроллера из файла tpl в корзине CS? отправка текста диапазона на другую страницу с помощью JS и php Повторение нескольких значений флажка в PHP PHP Youtube API v3 – Прямая загрузка – Несанкционированное сообщение Корзина WooCommerce – проверка категорий условных элементов Регулярные выражения и соответствие Насколько безопасны переменные сеанса PHP? 403 Запрещено, если вход содержит «скрипт», Конкатенация строк PHP PHP: Самый простой способ удалить папку (включая ее содержимое) не удалось загрузить ошибку внешнего объекта в SOAP laravel 4 Яркая нагрузка как список идентификаторов

php XML DOM переводит специальные символы в & # xYY;

Я отправляю это с помощью AJAX POST:

<li><ul class "zone zCentral ui-sortable"><li><ul class="region rCol3 ui-sortable"><li class="" style=""><div><span class="tc tc_video">574081</span> <span>video: 'Mundo.Hoy': ¿Dónde habré olvidado... mi memoria?</span></div></li></ul></li></ul></li> 

Я делаю это для создания XML:

  header('Content-type: text/html; charset=utf-8'); if(isset($_POST) && isset($_POST['data'])) { $data = '<ul id="zone_container" class="ui-sortable">'; $data .= $_POST['data']; $data .= '</ul>'; $dom = new DOMDocument('1.0', 'utf-8'); $dom->loadXML($data); echo $dom->saveXML(); exit(); } 

и я получаю это:

 <?xml version="1.0"?> <ul id="zone_container" class="ui-sortable"> <li><ul class="zone zCentral ui-sortable"><li><ul class="region rCol3 ui-sortable"><li class="" style=""><div><span class="tc tc_video">574081</span> <span>video: 'Mundo.Hoy': ¿Dónde habré olvidado... mi memoria?</span></div> </li></ul></li></ul></li></ul> 

¿Dónde habré olvidado … mi memoria?

переводит на:

 ¿Dónde habr&#xE9 ; olvidado... mi memoria? 

Мне нужны оригинальные символы в XML, это utf-8, и я не знаю причины этого кодирования 🙁

Самый простой способ исправить это – установить тип кодировки после загрузки XML:

 $dom = new DOMDocument(); $dom->loadXML($data); $dom->encoding = 'utf-8'; echo $dom->saveXML(); exit(); 

Вы также можете исправить это, поставив XML-объявление в начале ваших данных:

 $data = '<?xml version="1.0" encoding="utf-8"?>' . $data; $dom = new DOMDocument(); $dom->loadXML($data); echo $dom->saveXML(); exit(); 

Я решил с этим:

  header('Content-type: text/html; charset=utf-8'); if(isset($_POST) && isset($_POST['data'])) { $data = '<?xml version="1.0" encoding="utf-8"?>'; $data .= '<ul id="zone_container" class="ui-sortable">'; $data .= $_POST['data']; $data .= '</ul>'; $dom = new DOMDocument('1.0', 'utf-8'); $dom->loadXML($data); echo $dom->saveXML(); exit(); 

добавив:

  $data = '<?xml version="1.0" encoding="utf-8"?>'; 

к XML в начале

спасибо за ответы 🙂