为什么以下网址验证会给我错误。如果我把url = www.google.ca,它会给我一个错误的网址。
function validateURL($url){
$regex = "((https?|ftp)://)?";
$regex .= "([a-z0-9+!*(),;?&=$_.-]+(:[a-z0-9+!*(),;?&=$_.-]+)?@)?";
$regex .= "([a-z0-9-.]*).([a-z]{2,3})";
$regex .= "(:[0-9]{2,5})?";
$regex .= "(/([a-z0-9+$_-].?)+)*/?";
$regex .= "(?[a-z+&$_.-][a-z0-9;:@&%=+/$_.-]*)?";
$regex .= "(#[a-z_.-][a-z0-9+$_.-]*)?";
if(preg_match('/^$regex$/', $url))
{
echo $url." =".'<font color="blue">Valid URL</font>';
}
else {
echo $url." =".'<font color="red">Invalid URL</font>';
}
}
$url = 'www.google.ca';
validateURL($url);
答案 0 :(得分:0)
为什么这不起作用有几个原因。
'
括起来时,不会评估变量。因此,'/^$regex$/'
将完全按照其编写的方式进行评估。$
的{{1}}的内容都会被评估。因此,"
之类的内容将替换为变量$_
的内容(如果存在)。$_
变量中转义反斜杠和问号。这将有效:
$regex