PHP – Get HTTP Response Status Code From a URL
This post shows you how to get the HTTP response status code from a URL. To do this, we will use get_headers built-in function, which returns an array with the headers in the HTTP response.
1. Exploring get_headers function
Let’s create a test to check what response headers we will get.
$url = 'https://bytenota.com';
$responseHeaders = get_headers($url, 1);
print_r($responseHeaders);
And here is the result:
Array
(
[0] => HTTP/1.0 200 OK
[Content-Type] => text/html; charset=UTF-8
[Link] => ; rel="https://api.w.org/"
[Date] => Tue, 19 Jun 2018 07:42:10 GMT
[Accept-Ranges] => bytes
[Server] => LiteSpeed
[Alt-Svc] => quic=":443"; ma=2592000; v="35,37,38,39"
[Connection] => close
)
As you can see in the result, the HTTP response status code is in the first index value of the array (HTTP/1.0 200 OK
).
The response status code can be:
- HTTP/1.0 200 OK:
- HTTP/1.0 301 Moved Permanently
- HTTP/1.0 400 Bad Request
- HTTP/1.0 404 Not Found
- ect.
You can find the full list of response status code on this page.
2. Implementation
function getHTTPResponseStatusCode($url)
{
$status = null;
$headers = @get_headers($url, 1);
if (is_array($headers)) {
$status = substr($headers[0], 9);
}
return $status;
}
In the above code, we have implemented the function that returns an HTTP response status code only from given URL, i.e. we have removed HTTP/1.0
string in the first index value of the array.
3. Usage
The below are two examples showing how to use the implemented function.
- Example 1:
$url = 'https://bytenota.com';
$statusCode = getHTTPResponseStatusCode($url);
echo $statusCode;
- Output 1:
200 OK
- Example 2:
$url = 'https://google.com/this-is-a-test';
$statusCode = getHTTPResponseStatusCode($url);
echo $statusCode;
- Output 2:
404 Not Found
Thank for sharing this post with us. Very helpful and useful information.
Thank you very much for the post :). Best wishes.