Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

PHP Network gethostbynamel() Function



The PHP Network gethostbynamel() function is used to returns all IPv4 addresses linked to a given hostname (website or server name). It analyzes the hostname and produces a list of IP addresses to which it can connect.

This function is useful for seeing all of the IP addresses linked with a domain. For example, a website may have multiple servers with different IP addresses.

If the hostname is not found or resolved, the function returns false. It is supported in PHP versions 4, 5, 7, and 8. This makes it useful for working with both older and newer PHP versions.

Syntax

Below is the syntax of the PHP Network gethostbynamel() function −

array gethostbynamel ( string $hostname )

Parameters

This function accepts $hostname parameter which is the domain or hostname that you want to examine. It should be a string. For example, "example.com" and "tutorialspoint.com".

Return Value

The gethostbynamel() function returns an array of IPv4 addresses (strings) that the hostname resolves to. Each IP address corresponds to the server to which the domain is connected. And it returns false if the hostname cannot be resolved or does not exist.

PHP Version

First introduced in core PHP 4, the gethostbynamel() function continues to function easily in PHP 5, PHP 7, and PHP 8.

Example 1

This program shows the very basic use case of the PHP Network gethostbynamel() function, which finds a single hostname and prints its IP address.

<?php
   // Get the IP addresses 
   $ips = gethostbynamel("example.com");

   // Check if the hostname resolves and print the IPs
   if ($ips !== false) {
      print_r($ips);
   } else {
      echo "Hostname could not be resolved.";
   }
?>

Output

Here is the outcome of the following code −

Array
(
   [0] => 93.184.215.14
)

Example 2

In the below PHP code we will try to use the gethostbynamel() function and handle multiple host names. So it extends functionality to resolve multiple host names and show their corresponding IP addresses.

<?php
   // List of host names to resolve
   $hostnames = ["tutorialspoint.com", "example.com", "domainnotpresent.test"];

   foreach ($hostnames as $hostname) {
      $ips = gethostbynamel($hostname);
      echo "IP address for $hostname: ";
      echo $ips !== false ? implode(", ", $ips) : "Could not be resolved.";
      echo PHP_EOL;
   }
?> 

Output

This will generate the below output −

IP address for tutorialspoint.com: 142.250.192.110
IP address for example.com: 93.184.215.14
IP address for domainnotpresent.test: Could not be resolved.

Example 3

Now in the below program we will try to validate host names before resolving. It includes validation of the hostname to make sure it is in a valid format before using the gethostbynamel() function.

<?php
   // Validate and resolve a hostname
   $hostname = "example.com";

   if (filter_var(gethostbyname($hostname), FILTER_VALIDATE_IP)) {
      $ips = gethostbynamel($hostname);
      echo "Valid hostname. IPs: ";
      echo $ips !== false ? implode(", ", $ips) : "Could not be resolved.";
   } else {
      echo "Invalid hostname format.";
   }
?> 

Output

This will create the below output −

Valid hostname. IPs: 93.184.215.14

Example 4

In the following example, we are using the gethostbynamel() function to resolve multiple host names, saves the results to a file and also provide fallback handling for unresolved domains.

<?php
   // List of host names and file to save results
   $hostnames = ["tutorialspoint.com", "example.com", "domainnotpresent.test"];
   $file = "saved_ips.txt";
   $result = "";

   foreach ($hostnames as $hostname) {
      $ips = gethostbynamel($hostname);
      $result .= $hostname . ": " . ($ips !== false ? implode(", ", $ips) : "Could not be resolved.") . PHP_EOL;
   }

   // Write the results to a file
   file_put_contents($file, $result);
   echo "IP addresses saved to $file.";
?> 

Output

Following is the output of the above code −

IP addresses saved to saved_ips.txt.

Here is the content of the saved_ips.txt file −

tutorialspoint.com: 142.250.192.110
example.com: 93.184.215.14
domainnotpresent.test: Could not be resolved.
php_function_reference.htm
Advertisements