2017-06-08 66 views
0

我想那preg_match接受https://http://但也沒有那樣的URL,如google.de,sh.st和類似的東西。preg_match與2條規則不起作用

這個if語句的工作原理,但它僅接受https://http://網址

if(!preg_match("/^[a-zA-Z]+[:\/\/]+[A-Za-z0-9\-_]+\\.+[A-Za-z0-9\.\/%&=\?\-_]+$/i", $flink)) { 
    $html = "Error: invalid URL"; 
} 

我想這一點,但是這並不工作太...

$bd = "/^[a-zA-Z]+[:\/\/]+[A-Za-z0-9\-_]+\\.+[A-Za-z0-9\.\/%&=\?\-_]+$/i"; 
$dbb = "/^[A-Za-z0-9\-_]+\.+[A-Za-z0-9\.\/%&=\?\-_]+$/i"; 
if(!preg_match($bd, $flink) || !preg_match($dbb, $flink)) { 
    $html = "Error: invalid URL"; 
} 

有什麼不對?問題頁https://viid.su

+0

你是否意識到'$ dbb'的匹配被註釋掉了?此外,URL的域不需要包含本地域的'.',即:'http:// localhost/index.php'。你可能也想要解析這些。 – Halcyon

+0

不,我也知道它被註釋掉了,只是導致它沒有工作 – Leeroy

+0

這是怎麼回事? '(?:https?\:\/\ /)?' – Kazz

回答

0

我想你想:

/^[A-Za-z0-9\-_]+\.+[A-Za-z0-9\.\/%&=\?\-_]+$/ 
       ^-- removed a \ here. 

第二個正則表達式。然後它將匹配google.desh.st

+0

不起作用:/ – Leeroy

+0

它適用於我。嘗試在這裏:https://regex101.com/r/tQIqGS/1/ – Halcyon