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


Я генерирую XML с помощью библиотеки PHP, как показано ниже:

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

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

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

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

Author: j0k, 2012-09-01

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);
}

Надеюсь, это сэкономит кому-то еще немного времени..

 81
Author: Prashant, 2015-12-16 10:17:32

Прашант абсолютно прав. Вы также можете удалить недопустимые символы в Javascript, выполнив:

function utf8_for_xml(inputStr) {
  return inputStr.replace(/[^\x09\x0A\x0D\x20-\xFF\x85\xA0-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/gm, '');
}
 4
Author: Quang Tran, 2017-01-16 02:12:28