如何在字符串已包含Http时添加www

时间:2013-11-18 15:33:32

标签: php

如果没有www并且字符串已命名或https://example.com,如何将www添加到网址?

示例:

http://ellos.dk //should be http://www.ellos.dk

我知道这可能是相当基本但我似乎无法找到一个漂亮的解决方案

4 个答案:

答案 0 :(得分:5)

假设www 从不那里:

str_replace('://', '://www.', 'http://ellos.dk');

如果www可能在那里,您将需要进行一些验证以确定是否需要调用上面的代码。但这将处理将www置于字符串中。

答案 1 :(得分:5)

你可以在正则表达式中使用“负向前瞻”:

$url = preg_replace('#^(https?)://(?!www\.)#i', '$1://www.', $url);

Regex 101 demo

PHP代码:

<?php
    function addWWW($url) {
        return preg_replace('#^(https?)://(?!www\.)#i', '$1://www.', $url);
    }

    var_dump( addWWW('http://ellos.dk') );
    var_dump( addWWW('http://www.ellos.dk') );
    var_dump( addWWW('https://www.ellos.dk') );
    var_dump( addWWW('https://ellos.dk') );
    var_dump( addWWW('HTTP://ellos.dk') );
?>

将输出:

string(19) "http://www.ellos.dk"  
string(19) "http://www.ellos.dk"  
string(20) "https://www.ellos.dk"  
string(20) "https://www.ellos.dk"  
string(19) "HTTP://www.ellos.dk"

DEMO

请注意http://subdomain.ellos.dk等网址会变为http://www.subdomain.ellos.dk

答案 2 :(得分:3)

您可以使用parse_url()来实现此目标:

function addWWW($url) {
    $parts = parse_url($url);
    if (strpos($url, '://www') === FALSE) {
        return 'http://www.'.$parts['host'];
    }
    return $url;
}

用法:

echo addWWW('http://ellos.dk');
echo addWWW('http://www.ellos.dk');

输出:

http://www.ellos.dk
http://www.ellos.dk

Demo!

答案 3 :(得分:2)

添加一些验证:

function addwww($link) {
    if(strpos($link,'://www') === false) {
        return str_replace('://','://www',$link);
    }
    return $link;
}