У меня есть несколько строк, которые действительны в моей базе данных, но когда я включаю их в атрибут вывода UTF-8 XML, они дают мне следующую ошибку:
Ошибка анализа XML: неверно сформирована
- несколько таблиц SQL с PHP для создания карты сайта
- Проверка XML: «Совпадение глобальной декларации недоступно для ошибки проверки»
- ошибка парсера: строка не запускается, ожидая «или» в php
- simplexml с curl, чтобы получить отформатированный xml вызов с api
- Что мне нужно знать о подписях XML для работы SAML?
Мой текущий код (упрощенный):
header('Content-Type: text/xml'); echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'; echo '<root attribute="' . htmlentities($string_from_hell) . '">';
Как форматировать эти строки, прежде чем включать их в атрибуты XML?
Возможное значение для $string_from_hell
: 
(не знаю, будет ли оно отображаться правильно)
Пытаться
htmlspecialchars($string_from_hell, ENT_QUOTES, "UTF-8")
htmlentities
не будет делать, потому что он создаст объекты HTML, которые не распознаются в XML, а только HTML. Вы также должны указать кодировку, потому что по умолчанию не UTF-8, это ISO-8859-1.
Вам также не хватает кавычек ( "
) вокруг значения атрибута.
Существуют также более эффективные способы создания XML-файлов, которые обрабатывают вас. См., Например, XMLWriter .