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

Pra*_*ant 30 php runtime-error tidy character-encoding xml-parsing

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

$dom = new DOMDocument("1.0","utf-8");
Run Code Online (Sandbox Code Playgroud)

执行上述操作会在页面中显示输出顶部的消息.

此页面包含以下错误:第274行第274505行的错误:PCDATA无效字符值27下面是第一个错误之前的页面呈现.

我尝试使用Tidy库进行纠正..使用iconv来获取UTF-8中的中文字符.

Pra*_*ant 88

本网站建议使用一个有用的功能来消除该错误. 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);
}
Run Code Online (Sandbox Code Playgroud)

希望能节省一些时间给别人..

  • 这太棒了.我看到我已经喜欢这个了.我想给你另一个喜欢的. (3认同)
  • 非常感谢您,它对我很有帮助! (2认同)

小智 5

Prashant是绝对正确的。您还可以通过执行以下操作去除Javascript中的无效字符:

function utf8_for_xml(inputStr) {
  return inputStr.replace(/[^\x09\x0A\x0D\x20-\xFF\x85\xA0-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/gm, '');
}
Run Code Online (Sandbox Code Playgroud)