从URL中删除协议和子域

时间:2011-07-12 15:46:17

标签: php string

我有一个这样的字符串:

http://www.downlinegoldmine.com/viralmarketing

我需要从字符串中移除http://www.(如果存在),如果不包含www,则需要http://

简而言之,我只需要没有任何协议的域名。

6 个答案:

答案 0 :(得分:4)

parse_url是完成工作的完美工具。您首先要调用它来分割部分的url,然后检查主机名部分以查看它是否以www.开头并将其剥离,然后将其组合回来。

更新:代码

echo normalize_url('http://www.downlinegoldmine.com/viralmarketing');

function normalize_url($url) {
    $parts = parse_url($url);

    unset($parts['scheme']);
    if (substr($parts['hostname'], 0, 4) == 'www.') {
        $parts['hostname'] = substr($parts['hostname'], 4);
    }

    if (function_exists('http_build_url')) {
        // This PECL extension makes life a lot easier
        return http_build_url($parts);
    }

    // Otherwise it's the hard way
    $result = null;
    if (!empty($parts['username'])) {
        $result .= $parts['username'];
        if (!empty($parts['password'])) {
            $result .= ':'.$parts['password'];
        }
        $result .= '@';
    }

    $result .= $parts['host'].$parts['path'];

    if (!empty($parts['query'])) {
        $result .= '?'.$parts['query'];
    }

    if (!empty($parts['fragment'])) {
        $result .= '#'.$parts['fragment'];
    }

    return $result;    
}

<强> See it in action

答案 1 :(得分:1)

只需使用parse_url(请参阅:http://php.net/manual/de/function.parse-url.php)。它还将包含不同的协议和路径等。

答案 2 :(得分:0)

$nvar = preg_replace("#http://(www\.)?#i", "", "http://www.downlinegoldmine.com/viralmarketing");

测试:

php> echo preg_replace("#http://(www\.)?#i", "", "http://www.downlinegoldmine.com/viralmarketing");
downlinegoldmine.com/viralmarketing

php> echo preg_replace("#http://(www\.)?#i", "", "http://downlinegoldmine.com/viralmarketing");
downlinegoldmine.com/viralmarketing

答案 3 :(得分:0)

可能有更好的方法,但是:

$url = preg_replace("#^(http://)?(www\\.)?#i", "", $url);

答案 4 :(得分:0)

$url = strncmp('http://', $url, 7) ? $url : substr($url, 7);
$url = strncmp('www.', $url, 4) ? $url : substr($url, 4);

答案 5 :(得分:0)

您可以使用以下内容删除https://,http://和www。来自网址。

   $url = 'http://www.downlinegoldmine.com/viralmarketing';
   echo preg_replace('/https?:\/\/|www./', '', $url);

返回downlinegoldmine.com/viralmarketing


您可以使用以下内容删除网址路径以及https://,http://和www ..

   $url = 'http://www.downlinegoldmine.com/viralmarketing';
   echo implode('/', array_slice(explode('/',preg_replace('/https?:\/\/|www./', '', $url)), 0, 1));

返回downlinegoldmine.com