How to Get Response Headers Using file_get_contents in PHP

Learn how to retrieve HTTP response headers using file_get_contents() in PHP. A simple and lightweight alternative to cURL for inspecting headers.

When working with APIs or external resources in PHP, sometimes you need to inspect the HTTP response headers — not just the content. While cURL is commonly used for this, you can also retrieve headers using the built-in file_get_contents() function with the right stream context.

In this post, we learn the effective way to get response headers, while using PHP file_get_contents() function.

Using $http_response_header PHP variable to Get Response Headers

We use file_get_contents() to fetch the content from a URL. But with some configuration, you can also access the response headers.

Here’s how you can do it:

<?php
$url = "https://example.com";

// Create a stream context
$options = [
    "http" => [
        "method" => "GET",
        "header" => "User-Agent: PHP\r\n"
    ]
];
$context = stream_context_create($options);

// Fetch the content
$response = file_get_contents($url, false, $context);

// Display the content
echo $response;

// Get the response headers
print_r($http_response_header);
?>

Explanation

  • We used stream_context_create() to define HTTP request options, like headers or methods.
  • The $http_response_header is a special PHP variable automatically populated when using file_get_contents() with an HTTP context.
  • It contains the raw headers returned by the server as an indexed array.

Example Output

When you run the above script, $http_response_header might contain something like:

Array
(
    [0] => HTTP/1.1 200 OK
    [1] => Content-Type: text/html; charset=UTF-8
    [2] => Date: Wed, 25 Jun 2025 10:30:00 GMT
    ...
)

Checking Specific Headers

You can loop through the headers to extract specific values:

foreach ($http_response_header as $header) {
    if (stripos($header, "Content-Type:") !== false) {
        echo "Content-Type Header: $header";
    }
}

Use Cases

We can use this method for various purpose as follows:

  • Verifying HTTP status codes
  • Checking content type or caching headers
  • Basic debugging of server responses without using cURL

Conclusion

While file_get_contents() is often seen as a simple way to read data from URLs, it’s surprisingly powerful when paired with stream contexts. For lightweight HTTP requests where you don’t need advanced control, it’s a quick alternative to cURL — and retrieving headers is straightforward using $http_response_header.

Different YouTube Video Thumbnail URLs You Can Use

Discover the various YouTube video thumbnail URL formats—from default to high resolution. Learn how to fetch and use them in your apps or websites.

To get the different thumbnails of embedded video from YouTube, use these image URLs for different dimensions,

1) For medium sized thumbnail image
http://i.ytimg.com/vi/<YouTube Video ID>/0.jpg

2)  For small sized thumbnail image

http://i.ytimg.com/vi/<YouTube Video ID>/1.jpg
http://i.ytimg.com/vi/<YouTube Video ID>/2.jpg
http://i.ytimg.com/vi/<YouTube Video ID>/3.jpg

3) For large or maximum sized thumbnail image

http://i.ytimg.com/vi/<YouTube Video ID>/maxresdefault.jpg

4) For High Definition Image

http://img.youtube.com/vi/<YouTube Video ID>/hqdefault.jpg

In above URLs, provide <YouTube Video ID>. To get Video ID from YouTube URL,

  • Go to http://www.youtube.com
  • Play any video
  • Copy an alphanumeric string followed by v= from URL

This is a Video ID of currently playing video.

For example:

Video ID of YouTube Video https://www.youtube.com/watch?v=ny8ngucMd_U is ny8ngucMd_U

Use this video ID in above thumbnail URLs to get different thumbnail image of this video.

How to Find YouTube Video ID from Any YouTube URL

Learn how to extract the YouTube video ID from different types of YouTube URLs using simple methods and regex examples. Ideal for developers and marketers.

YouTube has so many types of URLs to embed the video on your site. Sometimes it’s difficult to find a single regular expression to parse all type of YouTube URL and retrieve the video ID from it.

To retrieve the video ID from the YouTube URL, use this function,

function getVideoID($url) {
    $pattern = '#^(?:https?://)?(?:www\.)?(?:youtu\.be/|youtube\.com(?:/embed/|/v/|/watch\?v=|/watch\?.+&v=))([\w-]{11})(?:.+)?$#x';
    preg_match($pattern, $url, $matches);
    return (isset($matches[1])) ? $matches[1] : false;
}

Regular Expression explanation is as follows,

$pattern = '#^(?:https?://)?';    # Either http or https.
$pattern .= '(?:www\.)?';         #  Optional, www subdomain.
$pattern .= '(?:';                #  Group host alternatives:
$pattern .=   'youtu\.be/';       #    Either youtu.be,
$pattern .=   '|youtube\.com';    #    or youtube.com
$pattern .=   '(?:';              #    Group path alternatives:
$pattern .=     '/embed/';        #      Either /embed/,
$pattern .=     '|/v/';           #      or /v/,
$pattern .=     '|/watch\?v=';    #      or /watch?v=,    
$pattern .=     '|/watch\?.+&v='; #      or /watch?other_param&v=
$pattern .=   ')';                #    End path alternatives.
$pattern .= ')';                  #  End host alternatives.
$pattern .= '([\w-]{11})';        # Youtube video ids with standard length of 11 chars.
$pattern .= '(?:.+)?$#x';         # Optional other ending URL parameters.

Fix cPanel SoftException: GID of Script is Smaller Than min_gid

Learn how to resolve the cPanel SoftException error ‘GID of script is smaller than min_gid’. Step-by-step guide to fix permission and ownership issues.

After upgrading EasyApache in WHM, sometimes it gives 500 (Internal Server Error) error in the browser.  If you check the error_log file, you find:

SoftException in Application.cpp:363: GID of script "/home/current_user/public_html/index.php" is smaller than min_gid

OR

SoftException in Application.cpp:363: UID of script "/home/current_user/public_html/index.php" is smaller than min_uid

If you check the permission of user/group for this file, it gives you root. So, apache can’t read these files uploaded by the root user. One solution is to change the permission of user/group to your current user.

chown current_user:current_user /home/current_user/public_html/ -R

This will solve the permission related issue on your site.

References :
http://www.flynsarmy.com/2011/10/cpanel-softexception-uid-is-smaller-than-min_uid/
http://forums.eukhost.com/f15/how-solve-error-softexception-application-cpp-303-a-6205/

How to Decode HTML Entities Using jQuery?

Learn how to decode HTML entities in jQuery using smart and efficient methods. Includes working examples and cross-browser techniques.

When working with dynamic HTML content, you might encounter special characters represented as HTML entities (e.g., &lt; for <, &gt; for >). These are essential for rendering text safely in browsers, but sometimes you may need to convert them back to their original characters — a process known as decoding.

In this article, we’ll explore how to decode HTML entities using jQuery in a simple and effective way.

Why Decode HTML Entities?

Most of the browsers convert certain characters into HTML entities to avoid rendering issues or XSS attacks. For example:

  • < becomes &lt;
  • > becomes &gt;
  • & becomes &amp;
  • " becomes &quot;

If you’re extracting or manipulating HTML content through JavaScript or AJAX, you may receive entity-encoded strings. To properly display or process them, you’ll need to decode these entities to a readable format.

jQuery Method to Decode HTML Entities

jQuery itself doesn’t provide a direct function to decode HTML entities, but you can use the browser’s native HTML parsing capability by leveraging a temporary DOM element like textarea.

Example Code:

function decodeHtmlEntities(encodedStr) {
    return $('<textarea/>').html(encodedStr).text();
}

// Usage
var encoded = '&lt;p&gt;Hello World!&lt;/p&gt;';
var decoded = decodeHtmlEntities(encoded);

console.log(decoded); // Output: <p>Hello World!</p>

Explanation:

  • $('<textarea/>') creates a temporary <textarea> element.
  • .html(encodedStr) sets the HTML content with entities.
  • .text() extracts the decoded plain text.

This approach is safe and works across all modern browsers.

Alternative Vanilla JavaScript Method

If you prefer using plain JavaScript without jQuery, here’s an equivalent solution:

function decodeHtmlEntities(encodedStr) {
    var txt = document.createElement('textarea');
    txt.innerHTML = encodedStr;
    return txt.value;
}

// Usage
var decoded = decodeHtmlEntities('&amp;copy; 2025');
console.log(decoded); // Output: © 2025

This is same example in Vanilla Javascript.

Use Case Examples

Below are some examples to demostrate the usage of decodeHtmlEntities function.

Example 1: Decoding API Response

If your API is giving response in HTML entities, you can use this function to decode it.

$.get('/get-description', function(data) {
    var decoded = decodeHtmlEntities(data.description);
    $('#description').text(decoded);
});

Example 2: Decoding User Input Stored with Entities

Sometimes, we store user input data in the database with HTML encoded string. We can use this function to decode HTML entities.

var userInput = '&lt;script&gt;alert(&quot;Hi&quot;)&lt;/script&gt;';
$('#output').text(decodeHtmlEntities(userInput));

Conclusion

Decoding HTML entities is essential when you’re dealing with encoded data from the server or other sources. Using jQuery’s ability to manipulate DOM elements, you can easily decode entities without additional libraries.

This simple technique ensures that your content is displayed correctly, improving both functionality and user experience.