への呼び出しから HTTP 応答コードを取得するためにsimplexml_load_file()
、私が知っている唯一の方法は、PHP のほとんど知られていない を使用すること$http_response_header
です。この変数は、HTTP ラッパーを介して HTTP 要求を行うたびに、各応答ヘッダーを個別に含む配列として自動的に作成されます。つまり、simplexml_load_file()
またはfile_get_contents()
「http://」で始まる URL を使用するたびに、
print_r()
次のようなものを使用してその内容を検査できます
$xml = @simplexml_load_file($request_url);
print_r($http_response_header);
ただし、あなたのケースでは、file_get_contents()
次に XML を個別に取得し、4xx 応答を取得したかどうかをテストし、そうでない場合は本文を に渡しsimplexml_load_string()
ます。例えば:
$response = @file_get_contents($request_url);
if (preg_match('#^HTTP/... 4..#', $http_response_header[0]))
{
// received a 4xx response
}
$xml = simplexml_load_string($response);