Extracting the Domain Name from Any URL Using PHP
In PHP, you encounter various scenarios where you need to retrieve the domain name from a given URL. To cater to this requirement, here's a comprehensive solution that handles URLs in different formats.
Regular Expression Method
The following regular expression can be used to extract the domain name from any URL:
<code class="php">$regex = '/^(http|https):\/\/[a-z0-9]*\.[a-z0-9.]+/i';</code>
This regular expression will match all URLs, including subdomains, and capture the domain name.
Parse URL Method
Alternatively, you can use the parse_url() function to extract the host from the URL. The host contains the domain name and any subdomains.
<code class="php">$info = parse_url($url); $host = $info['host'];</code>
Separating the Domain and TLD
To extract only the domain name (without any subdomains) and the top-level domain (TLD), you can use the following code:
<code class="php">$host_names = explode(".", $host); $bottom_host_name = $host_names[count($host_names)-2] . "." . $host_names[count($host_names)-1];</code>
This code splits the host into its component parts and extracts the domain name and TLD.
Example Usage
To demonstrate the usage of these methods, consider the following code:
<code class="php">$url = 'https://www.example.com/foo/bar'; // Using regular expression preg_match($regex, $url, $matches); $domain_name = $matches[0]; // Using parse_url and explode $info = parse_url($url); $host = $info['host']; $host_names = explode(".", $host); $bottom_host_name = $host_names[count($host_names)-2] . "." . $host_names[count($host_names)-1]; echo "Domain name (regex): " . $domain_name . "<br>"; echo "Domain name and TLD (parse_url): " . $bottom_host_name;</code>
This code will output:
Domain name (regex): example.com Domain name and TLD (parse_url): example.com
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!