어떻게 추가 할 수 있습니다 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
답변
@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;
}
참고 : 이것은 간단하고 직접적인 솔루션 일 수 있지만 사용하는 Jack의 대답 parse_url
은 거의 비슷하고 훨씬 더 강력합니다. 아마 그것을 사용해야 할 것입니다.
답변
이에 대한 최상의 답변은 다음과 같습니다.
function addhttp($url)
{
return $url = empty(parse_url($url)['scheme']) ? 'http://' . ltrim($url, '/') : $url;
}
답변
문자열을 스캔하고 ://
없는 경우 문자열 앞에 추가 http://
합니다. 나머지는 문자열을 그대로 사용합니다.
이것은 쓰레기 입력 문자열이 없으면 작동합니다.
답변
nickf 솔루션 수정 :
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 : //를 URL에 추가합니다.