Подтвердить что ты не робот

PHP сгенерированный XML показывает недопустимое сообщение Char значение 27

Я создаю XML, используя библиотеку PHP, как показано ниже:

$dom = new DOMDocument("1.0","utf-8");

Выполнение выше результатов на странице, на которой отображается сообщение поверх вывода.

Эта страница содержит следующие ошибки: ошибка в строке 16 в столбце 274505: недействительное значение PCDATA Char 27 Ниже представлена ​​рендеринг страницы с первой ошибкой.

Я попытался исправить использование библиотеки Tidy.. использовал iconv, чтобы получить китайский символ в UTF-8.

4b9b3361

Ответ 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, '');
}