Сгенерированный PHP XML показывает недопустимое значение символа 27 сообщение
Я генерирую XML с помощью библиотеки PHP, как показано ниже:
$dom = new DOMDocument("1.0","utf-8");
Выполнение вышеописанного приводит к появлению страницы, на которой отображается сообщение поверх вывода.
Эта страница содержит следующие ошибки: ошибка в строке 16 в столбце 274505: неверное значение символа PCDATA 27 Ниже приведен рендеринг страницы до первой ошибки.
Я попытался исправить с помощью библиотеки Tidy.. использовал iconv, чтобы получить китайский иероглиф в UTF-8.
2 answers
На этом веб-сайте предлагается полезная функция для устранения этой ошибки. http://www.phpwact.org/php/i18n/charsets#common_problem_areas_with_utf-8
Когда вы помещаете строки в кодировке utf-8 в XML-документ, вы должны помнить, что не все допустимые символы utf-8 принимаются в XML-документе http://www.w3.org/TR/REC-xml/#charsets
Поэтому вам следует удалить ненужные символы, иначе у вас возникнет фатальная ошибка синтаксического анализа XML, такая как выше
function utf8_for_xml($string)
{
return preg_replace ('/[^\x{0009}\x{000a}\x{000d}\x{0020}-\x{D7FF}\x{E000}-\x{FFFD}]+/u', ' ', $string);
}
Надеюсь, это сэкономит кому-то еще немного времени..
Прашант абсолютно прав. Вы также можете удалить недопустимые символы в Javascript, выполнив:
function utf8_for_xml(inputStr) {
return inputStr.replace(/[^\x09\x0A\x0D\x20-\xFF\x85\xA0-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/gm, '');
}