PHP сгенерированный XML показывает недопустимое сообщение Char значение 27
Я создаю XML, используя библиотеку PHP, как показано ниже:
$dom = new DOMDocument("1.0","utf-8");
Выполнение выше результатов на странице, на которой отображается сообщение поверх вывода.
Эта страница содержит следующие ошибки:
ошибка в строке 16 в столбце 274505: недействительное значение PCDATA Char 27
Ниже представлена рендеринг страницы с первой ошибкой.
Я попытался исправить использование библиотеки Tidy.. использовал iconv, чтобы получить китайский символ в UTF-8.
Ответы
Ответ 1
На этом веб-сайте предлагается полезная функция, чтобы избавиться от этой ошибки. 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);
}
Надеюсь, что кто-то еще кого-нибудь спасет.
Ответ 2
Прашант абсолютно прав. Вы также можете удалить недопустимые символы в Javascript, выполнив следующие действия:
function utf8_for_xml(inputStr) {
return inputStr.replace(/[^\x09\x0A\x0D\x20-\xFF\x85\xA0-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/gm, '');
}