validation — Как проверить Vine URL и разрешить HTTP или HTTPS, используя переполнение стека

Как это можно изменить, чтобы разрешить HTTP или HTTPS для Vine URL?

$vineURL = 'https://vine.co/v/';
$pos = stripos($url_input_value, $vineURL);

if ($pos === 0) {
echo "The url '$url' is a vine URL";
}
else {
echo "The url '$url' is not a vine URL";
}

1

Решение

Вы можете использовать parse_url Функция разбивает URL на свои компоненты, что облегчает сопоставление каждого компонента по отдельности:

var_dump(parse_url("https://vine.co/v/"));
// array(3) {
//   ["scheme"]=>
//   string(4) "http"//   ["host"]=>
//   string(7) "vine.co"//   ["path"]=>
//   string(3) "/v/"// }

Затем вы можете просто проверить, если scheme, host а также path матч:

function checkVineURL($url) {
$urlpart = parse_url($url);
if($urlpart["scheme"] === "http" || $urlpart["scheme"] === "https") {
if($urlpart["host"] === "vine.co" || $urlpart["host"] === "www.vine.co") {
if(strpos($urlpart["path"], "/v/") === 0) {
return true;
}
}
}
return false;
}
checkVineURL("https://vine.co/v/");     // true
checkVineURL("http://vine.co/v/");      // true
checkVineURL("https://www.vine.co/v/"); // true
checkVineURL("http://www.vine.co/v/");  // true
checkVineURL("ftp://vine.co/v/");       // false
checkVineURL("http://vine1.co/v/");     // false
checkVineURL("http://vine.co/v1/");     // false
3

Другие решения

Просто выньте «https: //» и измените if Скажите немного … вот так:

$vineURL = 'vine.co/v/';
if(stripos($user_input_value, $vineURL) !== false) {
echo "This is a vine URL";
} else {
echo "This is not a vine URL";
}
1

Пользователь RegEx нравится

if (preg_match("/^http(s)?:\/\/(www\.)?vine\.co\/v\//", $url)) {
echo "This is a vine URL";
} else {
echo "This is not a vine URL";
}
0
По вопросам рекламы [email protected]