PHP:
Downloading a web page

How to:

PHP makes web page downloading pretty straightforward. Here’s a simple example using file_get_contents():

<?php
$url = "http://example.com";
$pageContent = file_get_contents($url);

if ($pageContent !== false) {
    echo "Page downloaded successfully.\n";
    // Do stuff with $pageContent
} else {
    echo "Failed to download the page.\n";
}
?>

And if you need more control or want to handle HTTP headers, cookies, or POST requests, you can get fancy with cURL:

<?php
$url = "http://example.com";
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$pageContent = curl_exec($ch);

if (curl_errno($ch)) {
    echo "Error: " . curl_error($ch) . "\n";
} else {
    echo "Page downloaded successfully.\n";
    // Do stuff with $pageContent
}

curl_close($ch);
?>

Sample Output could be:

Page downloaded successfully.

Deep Dive

Downloading web pages is a practice as old as the web itself. Initially, to interact with web pages, you’d use command-line tools like wget or curl. However, as PHP evolved, functions made these tasks doable within scripts.

Let’s compare:

  • file_get_contents(): Easy for simple tasks but lacks advanced features. Good for quick grabs without fuss.
  • cURL: The Swiss Army knife for web requests in PHP. Handles complex scenarios like authentication, cookies, and setting headers. A bit bulkier, but there when you need the extra muscle.

Behind the scenes, file_get_contents() sends a standard GET request. That means it acts just like a browser when you type in a URL. But without HTTP context (like headers), some pages may not return the right content.

cURL, on the other hand, can mimic browser behavior to the tee. That’s necessary for the twitchy pages that expect certain headers or cookies.

Remember, some sites don’t appreciate being scraped. Always respect robots.txt and terms of service.

See Also