将http://添加到提交的URL的开头

时间:2011-04-13 17:50:49

标签: php

我正在寻找将http://添加到提交的网址的最佳方式。我有一个网站,允许用户在注册时提交他们的网站URL,问题是一些用户类型“example.com”,一些用户输入“www.example.com”,有些类型“http(s)://示例。 COM“

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

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

5 个答案:

答案 0 :(得分:5)

你真的不需要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

如果您有任何疑问,请考虑在下面添加评论。

参考文献:

答案 1 :(得分:0)

要考虑http(s)://,这非常简单,因为有两个选项只能检查。即检查链接是否以“http://”或“https://”开头,如果没有,则添加“http://”。

你的问题的另一部分是“.co.uk”,你可以在字典中收集所有可用的后缀,这是一个非常糟糕的主意,或者你可以简单地检查是否存在“。”。留下“。”之后的内容。对用户的责任。

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

答案 2 :(得分:0)

for php,

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

答案 3 :(得分:0)

修复网址的简便方法:)

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

    return $url;
}

答案 4 :(得分:-1)

在提交的网址中搜索“http”和“https”,如果搜索返回null,则在开头添加“http”。 使用Javascript: var mystring =“example.com”; var normal = -1; var secured = -1; 正常= mystring.search(/ HTTP / I); 担保= mystring.search(/ HTTPS / I); 等等