我知道网络上有很多关于这个主题的信息,但是我似乎无法以我想要的方式理解它。
我正在尝试构建一个函数来从 url 中提取域名:
http://blabla.com blabla
www.blabla.net blabla
http://www.blabla.eu blabla
只需要域名的纯名称。
使用parse_url函数可以过滤掉域名,但这并不足够。我有3个函数可以去除域名,但仍然会得到一些错误的输出。
function prepare_array($domains)
{
$prep_domains = explode("\n", str_replace("\r", "", $domains));
$domain_array = array_map('trim', $prep_domains);
return $domain_array;
}
function test($domain)
{
$domain = explode(".", $domain);
return $domain[1];
}
function strip($url)
{
$url = trim($url);
$url = preg_replace("/^(http:\/\/)*(www.)*/is", "", $url);
$url = preg_replace("/\/.*$/is" , "" ,$url);
return $url;
}
允许使用任何可能的域名、URL和扩展名。函数完成后,必须返回仅包含域名本身的数组。
更新: 感谢大家的建议! 在你们的帮助下,我已经解决了这个问题。
function test($url)
{
// Check if the url begins with http:// www. or both
// If so, replace it
if (preg_match("/^(http:\/\/|www.)/i", $url))
{
$domain = preg_replace("/^(http:\/\/)*(www.)*/is", "", $url);
}
else
{
$domain = $url;
}
// Now all thats left is the domain and the extension
// Only return the needed first part without the extension
$domain = explode(".", $domain);
return $domain[0];
}
parse_url
函数来完成此操作。http://php.net/manual/function.parse-url.php - ChoiZ