首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php: SimpleXML加载文件无效字符错误

php: SimpleXML加载文件无效字符错误
EN

Stack Overflow用户
提问于 2013-01-23 00:41:24
回答 2查看 10.6K关注 0票数 8

我有一个php应用程序,它有时会失败(取决于我加载的数据),并给出如下错误:

代码语言:javascript
复制
parser error : PCDATA invalid Char value 11
Warning: simplexml_load_file(): ath>/datadrivenbestpractices/Data-driven Best Practices in 
Warning: simplexml_load_file(): ^ in 

我确信有一些价值观导致了这个问题。我无法控制数据。我尝试过来自Error: "Input is not proper UTF-8, indicate encoding !" using PHP's simplexml_load_stringHow to handle invalid unicode with simplexmlHow to skip invalid characters in XML file using PHP的解决方案,但它们都没有帮助。

罪魁祸首字符串是:“Data Driven - Best Practices”和“Data-driven Best Practices to招收和留住代表性不足的研究生,2011年5月12日-美国东部时间下午1:30-3:00”(可以是破折号或回车字符)。

我能做什么?我的环境是Windows php测试环境,但实时环境将是LAMP环境--不能接触.ini文件。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-01-23 01:04:27

在解析之前剥离无效字符将是最简单的修复方法:

代码语言:javascript
复制
function utf8_for_xml($string)
{
    return preg_replace ('/[^\x{0009}\x{000a}\x{000d}\x{0020}-\x{D7FF}\x{E000}-\x{FFFD}]+/u', ' ', $string);
}

来自:PHP generated XML shows invalid Char value 27 message

票数 15
EN

Stack Overflow用户

发布于 2013-01-23 02:11:54

不要紧,答案是:How to skip invalid characters in XML file using PHP确实起作用了。下面是我的代码:

代码语言:javascript
复制
stream_filter_register('xmlutf8', 'ValidUTF8XMLFilter');

class ValidUTF8XMLFilter extends php_user_filter
{
    protected static $pattern = '/[^\x{0009}\x{000a}\x{000d}\x{0020}-\x{D7FF}\x{E000}-\x{FFFD}]+/u';

    function filter($in, $out, &$consumed, $closing)
    {
        while ($bucket = stream_bucket_make_writeable($in)) {
            $bucket->data = preg_replace(self::$pattern, '', $bucket->data);
            $consumed += $bucket->datalen;
            stream_bucket_append($out, $bucket);
        }
        return PSFS_PASS_ON;
    }
}

$doc = simplexml_load_file("php://filter/read=xmlutf8/resource=".$serveraddress.$myparam);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14463573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档