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


PHP generated XML shows invalid Char value 27 message

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

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

执行以上操作会导致在输出顶部显示一条消息的页面。

此页面包含以下错误:第16行第274505列出现错误:PCDATA无效Char值27以下是第一个错误之前的页面呈现

我试着使用Tidy库进行更正。。使用iconv获取UTF-8格式的中文字符。

这个网站上建议使用一个有用的功能来消除这个错误。http://www.phpwact.org/php/i18n/charsets#common_problem_areas_with_utf-8

当您在XML文档中放入utf-8编码字符串时,应该记住并非所有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);
}

希望这能为其他人节省一些时间。。

Prashant是绝对正确的。您还可以通过以下操作去除Javascript中的无效字符:
function utf8_for_xml(inputStr) {
  return inputStr.replace(/[^'x09'x0A'x0D'x20-'xFF'x85'xA0-'uD7FF'uE000-'uFDCF'uFDE0-'uFFFD]/gm, '');
}