使用网址.. 我有一个可接受的网址格式列表,如下所示:
用户输入此anydomain.com/any/?test=1
将根据网址格式列表中的#3条目返回True ..
用户输入anydomain.com/any/asd/?test=1
之类的内容
return false .. domain.com/
返回false,因为与我的格式列表的任何条目都不匹配。
最好的办法是什么?
编辑:我不想检查网址是否有效!我正在尝试根据我的模式列表检查FORMAT是否有效..
答案 0 :(得分:0)
您可以使用php的filter_var函数获取有效的url格式
if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) {
return FALSE:
}
请注意
有效网址从http://
或https://
答案 1 :(得分:0)
您可能需要使用正则表达式来执行此操作:
$validFormats = Array(
'domain.com/test',
'domain.com/test/',
'domain.com/test/?test=(\d+)',
'domain.com/test/?test=(\d+)&bla=(\d+)'
);
$urlToCheck = 'domain.com/test/?test=1';
$isValid = false;
foreach($validFormats as $format) {
if(preg_match('#^'.$format.'$#i', $urlToCheck)) {
$isValid = true;
break;
}
}
if($isValid) {
echo 'Forbidden!';
} else {
echo 'Welcome!';
}
答案 2 :(得分:0)
你必须使用这样的正则表达式:
function checkUrl($var) {
if(is_array($var) || is_object($var)) {
return false;
}
return (preg_match("`^([a-z0-9]+)\.([a-z0-9]+){2,4}/([a-z0-9]+)/?(\?[a-z0-9A-Z&=]+)?$`", $var)) ? true : false;
}
checkUrl("anydomain.com"); // false
checkUrl("anydomain.com/any"); // true
checkUrl("anydomain.com/any/"); // true
checkUrl("anydomain.com/any/?test=1"); // true
checkUrl("anydomain.com/any/?test=1&bla=2"); // true
checkUrl("anydomain.com/any/asd/?test=1"); // false