Удалить протокол и субдомен из URL - PullRequest
1 голос
/ 12 июля 2011

У меня есть такая строка:

http://www.downlinegoldmine.com/viralmarketing

Мне нужно удалить http://www. из строки, если она существует, а также http://, если www не включен.

В двух словах мне просто нужно доменное имя без протокола.

Ответы [ 6 ]

4 голосов
/ 12 июля 2011

parse_url - идеальный инструмент для работы.Сначала нужно вызвать его, чтобы разделить URL-адрес на части, а затем проверить часть имени хоста, чтобы увидеть, начинается ли она с www., и удалить ее, а затем собрать URL-адрес обратно.*

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;    
}

См. Это в действии .

1 голос
/ 12 июля 2011

Просто используйте parse_url (см .: http://php.net/manual/de/function.parse-url.php). Он также будет включать различные протоколы и пути и т. Д.

0 голосов
/ 05 марта 2014

Вы можете использовать следующее для удаления https://, http://, и www.из URL.

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

выше возвращает downlinegoldmine.com/viralmarketing


, и вы можете использовать следующее для удаления пути URL, а также https://, http://,и www ..

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

выше возвращает downlinegoldmine.com

0 голосов
/ 12 июля 2011
$url = strncmp('http://', $url, 7) ? $url : substr($url, 7);
$url = strncmp('www.', $url, 4) ? $url : substr($url, 4);
0 голосов
/ 12 июля 2011

Возможно, есть лучший способ, но:

$url = preg_replace("#^(http://)?(www\\.)?#i", "", $url);
0 голосов
/ 12 июля 2011
$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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...