5.2(在我的 Web 服务器上使用 5.2.17,在本地主机上使用 5.3.6),设置如下: output_buffering = On output_handler = -6ren">
gpt4 book ai didi

PHP 的 XML 输出错误 : "XML or text declaration not at the start of entity"

转载 作者:数据小太阳 更新时间:2023-10-29 02:46:30 25 4
gpt4 key购买 nike

我使用 PHP 版本 > 5.2(在我的 Web 服务器上使用 5.2.17,在本地主机上使用 5.3.6),设置如下:

output_buffering = On
output_handler = ob_gzhandler

在下面的 PHP 脚本中,我输出一个 XML 响应以与 jQuery/AJAX 一起使用

if (empty($_GET))
{
$Response = new Response('getlanguage');
$Response->DisplayLanguage(LanguagesManager::GetLanguage());
die();
}

IOManager::InputSanitizeRequest($_GET);
$Language = isset($_GET['language']) ? $_GET['language'] : '';

$Response = new Response('setlanguage');

if (LanguagesManager::ValidateLanguage($Language))
{
LanguagesManager::SetLanguage($Language);
$Response->DisplayResult(true);
}
else
$Response->DisplayResult(false);

但是我的 jQuery/AJAX 函数不工作,如果我尝试手动检查我的 PHP 脚本的输出,我会在 Mozilla Firefox 上收到以下错误:

XML Parsing Error: XML or text declaration not at the start of entity
Address: http://127.0.0.1/responses/requestlanguage.php?language=it
Line Number 1, Column 2: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-^

这是由 XML 声明前的尾随空格引起的:

" <?xml version="1.0" encoding="UTF-8" standalone="yes"?>"

我检查了我的 PHP 标签,一切正常。在稍微弄乱我的代码之后,我发现了一些不可思议的事情:空格是由这个函数创建的:

LanguagesManager::ValidateLanguage($Language)

public static function ValidateLanguage($Language)
{
return in_array($Language, self::GetSupportedLanguages());
}

如果我注释整个 if 语句,或者如果我用一个简单的“true”替换那个函数,我就不会再收到解析错误了……好吧,我简直不敢相信。有人可以向我解释为什么吗?有人知道解决方案吗?

最佳答案

如果你没有发现错误,你可以尝试用输出缓冲来捕获空间,像这样:

ob_start();
// here the code part, which seems to print the whitespace (but nothing else)
$langValidated = LanguagesManager::ValidateLanguage($Language);
ob_end_clean();

if ($langValidated)
{
LanguagesManager::SetLanguage($Language);
$Response->DisplayResult(true);
}
else
$Response->DisplayResult(false);

关于PHP 的 XML 输出错误 : "XML or text declaration not at the start of entity",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6332135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com