http://如果URL尚未包含协议(例如http://,https://或ftp://),我该如何添加?
例:
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://rubbish
Run Code Online (Sandbox Code Playgroud)
Ali*_*xel 251
@nickf代码的修改版本:
function addhttp($url) {
if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
$url = "http://" . $url;
}
return $url;
}
Run Code Online (Sandbox Code Playgroud)
认识到ftp://,ftps://,http://和https://在不区分大小写的方式.
Ja͢*_*͢ck 126
在撰写本文时,没有一个答案使用内置函数:
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"
Run Code Online (Sandbox Code Playgroud)
也可以看看: parse_url()
Bre*_*ker 50
只需检查是否有协议(由"://"描述)并添加"http://"(如果没有).
if (false === strpos($url, '://')) {
$url = 'http://' . $url;
}
Run Code Online (Sandbox Code Playgroud)
注意:这可能是一个简单而直接的解决方案,但Jack使用的答案parse_url几乎同样简单且更加健壮.你应该使用那个.