Строка форматирования для атрибута xml в php - PullRequest
1 голос
/ 12 августа 2010

У меня есть несколько строк, которые допустимы в моей базе данных, но когда я включаю их в атрибут вывода XML UTF-8, они выдают мне следующую ошибку:

Ошибка синтаксического анализа XML: неправильно сформирован

Мой текущий код (упрощенно):

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: î„œ (не знаю, будет ли оно отображаться правильно)

1 Ответ

6 голосов
/ 12 августа 2010

Попытка

htmlspecialchars($string_from_hell, ENT_QUOTES, "UTF-8")

htmlentities не подойдет, потому что она создаст сущности HTML, которые не распознаются в XML, только HTML.Вы должны также указать кодировку, потому что по умолчанию это не UTF-8, это ISO-8859-1.

Вы также пропускаете кавычки (") вокруг значения атрибута.

Существуют также лучшие способы создания файлов XML, которые обрабатывают экранирование для вас.См. Например XMLWriter .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...