2017-06-08 6 views
0

Ich möchte, dass preg_match akzeptiert https:// und http:// sondern auch URLs, ohne dass wie google.de, sh.st und solche Sachen.preg_match mit 2 Regeln funktioniert nicht

Diese if-Anweisung funktioniert, aber es nimmt nur https:// und http:// URLs

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

Ich versuchte dies, aber auch dies nicht funktioniert ...

$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"; 
} 

Was ist falsch? Das Problem Seite ist https://viid.su

+0

Ist dir klar, dass die Übereinstimmung für '$ dbb' auskommentiert ist? Auch die Domain einer URL muss für lokale Domains kein '.' enthalten, zB:' http: // localhost/index.php'. Vielleicht möchten Sie auch in der Lage sein, diese zu parsen. – Halcyon

+0

nein, auch ich weiß, dass es auskommentiert ist, nur weil es nicht funktioniert – Leeroy

+0

was ist das? '(?: https? \: \/\ /)?' – Kazz

Antwort

0

Ich glaube, Sie wollen:

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

für die zweite regexp. Dann wird es google.de und sh.st übereinstimmen.

+0

funktioniert nicht:/ – Leeroy

+0

Es funktioniert für mich. Versuchte es hier: https://regex101.com/r/tQIqGS/1/ – Halcyon