使用PHP删除除域之外的所有内容

时间:2011-09-30 01:32:36

标签: php

我当前的js公式删除了http://,https://,www以及'/'之后的任何内容。

   function cleanUrl(url) { 
        return url.replace(/^(http(s)?:\/\/)?(www\.)?/gi,"");
    }

E.G: http://www.google.com/piza 返回google.com

如何使用PHP一步删除域以外的所有内容?

5 个答案:

答案 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']
?>