在提交的url的开头添加http://


Add http:// to the beginning of submitted url

我正在寻找将http://添加到提交的url的最佳方法。我有一个网站,允许用户在注册时提交他们的网站url,问题是一些用户类型"example.com"一些用户类型"www.example.com"和一些类型"http(s)://example.com"

我想要完成的是确保最终结果是"http(s)://example.com",无论他们提交什么。

有没有办法做到这一点,仍然说明其他东西,如co.uk或https?

您并不真正需要REGEX。REGEX通常非常昂贵。这是一个实现你的目标的自制函数:

function fix_url($url) {
    return (substr($url, 0, 7) == 'http://' || substr($url, 0, 8) == 'https://')
        ? $url 
        : 'http://'.$url;
}

样本:

$url = 'example.com';
$url1 = 'httpexample.com';
$url2 = 'http://example.com';
$url3 = 'https://example.com';
echo fix_url($url);
echo '<br>';
echo fix_url($url1);
echo '<br>';
echo fix_url($url2);
echo '<br>';
echo fix_url($url3);
echo '<br>';
输出:

http://example.com
http://httpexample.com
http://example.com
https://example.com

如果你有任何疑问,请考虑在下面留言。

引用:

  • substr ()

考虑到http(s)://,这是非常直接的,因为只有两个选项要检查。即检查链接是否以"http://"或"https://"开头,如果不是,则添加"http://"。

你问题的另一部分是解释"。co.",你可以在字典中收集所有可用的后缀,这是一个非常糟糕的主意,或者你可以简单地检查是否存在"。",把"。"后面的内容留给用户负责。

我希望我回答了你的问题:)

for php,

$str = preg_replace('/(?m)^(?!https?:'/'/.+)('S+)/',"http://$1",$str);

修复URL的简单方法:)

function addHttp( $url )
{
    if ( !preg_match("~^(?:f|ht)tps?://~i", $url) )
    {
        $url = "http://" . $url;
    }
    return $url;
}

在提交的URL中搜索'http'和'https',如果搜索返回null,在开头添加'http'。使用Javascript:mystring var = " example.com ";var正常= 1;var担保= 1;正常= mystring.search (/http/我);安全= mystring.search (/https/我);等等