Jag använder följande funktion för att kolla om en sträng är en url. Och den funkar bra men jag vill att den ska returnera true även om http:// inte finns i början.
Någon som vet hur jag ska modifiera min regex?
function checkurl($url) {
if (preg_match('/^(https?):\/\/((?:[-a-z0-9]+\.)*)([-a-z0-9]+)\.(com|edu|gov|int|mil|net|org|biz|info|name|museum|coop|aero|[a-z]{2})(\/[-a-z0-9_:@&?=+,.!\/~*%$]*)?$/i', $url)){
return true;
}else{
return false;
}
}
ja hur vill du annars göra? Du kan ju omöjligt kontrollera att länken är korrekt innan den retunera true ;) så länge folk skriver in ett godkänt utryck i din regExp kommer den retunera true. Den validera ju även nu http://nånting.nåntingannat.se vilket är detsamma som du nu önskar att man inte behöver ha http://
Vill du så kan du använda
^ och $ om du bara ska ha en "input" där man ska fylla i en URL...
Tar man bort ?PAGE=1284 så fungerar det dock. Hur justerar jag funktionen ovan för att få det här att funka? Eller finns det bättre sätt att kontrollera URL'er?
if (preg_match('/\b(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]/i', $subject)) {
# Successful match
} else {
# Match attempt failed
}