如何添加http://如果它不存在于URL中?

如果还没有http://https://ftp://如何将http://添加到URL?

例:

 addhttp("google.com"); // http://google.com addhttp("www.google.com"); // http://www.google.com addhttp("google.com"); // http://google.com addhttp("ftp://google.com"); // ftp://google.com addhttp("https://google.com"); // https://google.com addhttp("http://google.com"); // http://google.com addhttp("rubbish"); // 

HTTP://垃圾

@nickf代码的修改版本:

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

以不区分大小写的方式识别ftp://ftps://http://https://

在写这篇文章的时候,没有一个答案为此使用了一个内置的函数:

 function addScheme($url, $scheme = 'http://') { return parse_url($url, PHP_URL_SCHEME) === null ? $scheme . $url : $url; } echo addScheme('google.com'); // "http://google.com" echo addScheme('https://google.com'); // "https://google.com" 

另请参阅: parse_url()

只需检查是否有协议(由“://”描述),如果没有,则添加“http://”。

 if (false === strpos($url, '://')) { $url = 'http://' . $url; } 

注意 :这可能是一个简单而直接的解决scheme,但是使用parse_url杰克的答案几乎是简单的,而且更加健壮。 你应该使用那个。

扫描string为:// ,如果没有,请在http://前加上string..,其他所有的东西只要按原样使用即可。

这将工作,除非你有垃圾inputstring。

最好的答案是这样的:

 function addhttp($url) { return $url = empty(parse_url($url)['scheme']) ? 'http://' . ltrim($url, '/') : $url; } 

nickf解决scheme修改:

 function addhttp($url) { if (!preg_match("@^https?://@i", $url) && !preg_match("@^ftps?://@i", $url)) { $url = "http://" . $url; } return $url; } 
 <?php if (!preg_match("/^(http|ftp):/", $_POST['url'])) { $_POST['url'] = 'http://'.$_POST['url']; } $url = $_POST['url']; ?> 

如果不存在,此代码将向URL添加http://。

尝试这个。 不是水密的* ,但可能足够好:

 function addhttp($url) { if (!preg_match("@^[hf]tt?ps?://@", $url)) { $url = "http://" . $url; } return $url; } 

* :即,像“fttps://”的前缀被视为有效。

使用prep_url($ url);

 $url = prep_url($url); 

如果检查http是否存在,什么都不发生,否则添加http://