我当前的js公式删除了http://,https://,www以及'/'之后的任何内容。
function cleanUrl(url) {
return url.replace(/^(http(s)?:\/\/)?(www\.)?/gi,"");
}
E.G: http://www.google.com/piza 返回google.com
如何使用PHP一步删除域以外的所有内容?
答案 0 :(得分:7)
使用parse_url()
。
$domain = parse_url($url, PHP_URL_HOST);
请注意,www.example.com和example.com在技术上是完全独立的实体,可以指向完全不同的记录集。
答案 1 :(得分:2)
您可以将preg_replace与当前正则表达式一起使用并获得相同的结果: http://php.net/manual/en/function.preg-replace.php
答案 2 :(得分:0)
函数parse_url()
非常强大,来自php.net的示例用法将为您可以用它做些什么事情提供一些启示:
<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
?>
以上示例将输出:
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
答案 3 :(得分:0)
您可以结合使用的正则表达式(稍加修改)和使用parse_url()
Docs来完成主要工作:
function cleanUrl($url) {
return preg_replace('/^(www\.)?/i',"", parse_url($url, PHP_URL_HOST));
}
正如ceejayoz所写,您可能希望将www.
作为域名的一部分。
答案 4 :(得分:-3)
有一种更简单的方法;)
<?php
echo $_SERVER['HTTP_HOST']
?>