2011-04-13 91 views
2

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

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

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

+2

什么编程语言? – 2011-04-13 17:53:14

+0

对不起,我应该包括,我正在寻找一些适用于php的东西。 – James 2011-04-13 18:49:54

回答

5

你并不真正需要的正则表达式。 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 

如果您有任何疑问,请考虑下面添加注释。

参考文献:

+0

如果提供的URL使用非http协议,该怎么办? – Ryan 2011-04-13 19:15:27

+2

@Ryan,OP没有提到它。 – Shoe 2011-04-13 19:16:06

+0

这应该适用于我所需要的,非常感谢! – James 2011-04-13 19:47:11

0

要说明http(s)://,这是非常直接的,因为有两个选项只能检查。即检查链接是以“http://”还是“https://”开头,如果不是,则添加“http://”。

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

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

+1

是的,我肯定宁愿在“。”之后留下任何东西。直到用户,我想,如果他们希望人们找到他们的网站,他们应该确保它的正确性。 至于寻找HTTP(S),我应该这样做与正则表达式?我已经看到了很多正则表达式,而且我还没有足够的技巧来知道哪一个会起作用,似乎有成千上万的正则表达式,都是不同的。 这部分是重要的,因为它决定了我如何链接到他们的网站,当有人进入例子。它只是创建一个像http://www.MySite.com/example.com这样的链接,这当然是不好的。 – James 2011-04-13 18:54:11

+0

不需要正则表达式,这是昂贵的,你的情况是一个非常简单的字符串匹配。关于“MySite.com/example.com”,您现在可以验证网站是否错误,但可以通过简单的检查来检查多个网点,分号等。可以帮助您找到错误输入的网站并通知用户。除此之外,我不相信你可以验证所有输入网址的正确性:) – iBrAaAa 2011-04-14 10:49:38

-1

搜索“HTTP”,并在提交的URL的“https”,如果搜索返回null附加的“http”开头。 With Javascript: var mystring =“example.com”; var normal = -1; var secured = -1; normal = mystring.search(/ http/i); secured = mystring.search(/ https/i); 等

+1

不是JavaScript相关的问题 – Shoe 2011-04-13 19:12:33

0

为PHP,

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

谢谢你的时间,是否有代码可以使用PHP?我完全忘了说我在原始文章中使用了php。 – James 2011-04-13 18:50:42

+0

不是java相关的问题 – Shoe 2011-04-13 19:00:07

+0

@Charlie php标签是在事后编辑的。原来的问题没有提到一种语言。 – Davy8 2011-04-13 19:13:04

0

简单的方法来解决您的网址:)

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

    return $url; 
}