PHP 生成的 XML 显示无效的 Char 值 27 消息

我正在使用PHP库生成XML,如下所示:

$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, '');
}

推荐