PHPバージョン5.2(私のWebサーバーでは5.2.17、ローカルホストでは5.3.6)を使用しています。PHPのXML出力エラー:「エンティティの先頭に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);
を使用するためにXMLレスポンスを出力しています。しかし、私は手動で出力をチェックしようとした場合、私のjQueryの/ AJAX機能は、働いておらず、次のPHPスクリプトで
output_buffering = On
output_handler = ob_gzhandler
私の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文、または私は、単純な「真」でその機能を置き換える場合は私のコードを少しめちゃくちゃにした後、私は信じられないほどの何かをdiscoveded私はもはや解析エラーを取得しない...まあ、私はそれを信じることはできません。 誰かが私の理由を説明できますか?誰もが解決策を知っていますか?エラーが見つからなかった場合、あなたはこのように、出力バッファリングでスペースをキャッチしようとすることができ
あなたはそれが 'false'をを返すと' else'部分を実行していない特定のか?また、何らかの理由で 'self :: GetSupportedLanguages()'が何か変わる可能性がありますか? (私はそうではないと思うが、それはチェックすることを傷つけない。) – Wiseguy