I
[a-zA-Z0-9\-]\.
anger du att du endast vill matcha ett av dessa tecken.
Du menar att
[a-zA-Z]{,4}
skall vara det sista som matchas; i exemplet avslutas adressen med '/'.
7 svar · 546 visningar · startad av adde
jag vill testa om urlen är gilltig:
$website = $_POST[website];
if (preg_match("/^http\:\/\/([a-zA-Z]+\.)?[a-zA-Z0-9\-]\.[a-zA-Z]{,4}$/",$website)){
echo "fungerar";
}else {
echo "fungerar inte";
}
skriver jag in en adress, exempelvis: http://www.aftonbladet.se/
så fungerar det inte, blir alltid fel!
Vad gör jag för fel???
I
[a-zA-Z0-9\-]\.
anger du att du endast vill matcha ett av dessa tecken.
Du menar att
[a-zA-Z]{,4}
skall vara det sista som matchas; i exemplet avslutas adressen med '/'.
preg_match("|^https?://[\w\.\-]+\.[a-z]{2,6}/?$|i", $website);
/red mindre justering.. hade missat att tillåta - och att upp till 6 tecken kunde ingå i toppdomänen.. se inlägg nedan
Flyttas från PHP!
Csson skrev:
Utvecklar den lite så att det går att använda - i urlen. Det finns även ett par TLDer som är längre än fyra bokstäver.
preg_match("|^https?://(\w[-\w]*?\w\.)+[a-z]{2,6}/?$|i", $website);Den fallerar ju även om någon anger en url som innehåller mer än enbart domänen, men det kanske är meningen.
hur menar du med att den fallerar om man anger mer än bara domänen ??
missade - i min.. o visste inte att det fanns topdomäner med fler än 4 bokstäver...
tycker din variant verkar onödigt invecklad.. varför ens gruppera ihop dem ?
följande ...
preg_match("|^https?://[\w\.\-]+\.[a-z]{2,6}/?$|i", $website);
fixar även - o med upp till 6 bokstäver i toppdomänen
sl0k skrev:
hur menar du med att den fallerar om man anger mer än bara domänen ??
Att http://www.aftonbladet.se/sport/ inte matchas. Iofs bara att ta bort $, men antar att adde ville ha det så.
sl0k skrev:
tycker din variant verkar onödigt invecklad.. varför ens gruppera ihop dem ?
Beror på hur petig man vill vara.. - är iallafall inte giltig först och sist i domännamn vad jag vet. Om man inte är så petig spelar det ingen roll :).
sant .. hehe .. tänkte inte så långt :)
preg_match("|^https?://[\w\.\-]+\.[a-z]{2,6}(/[^\s]*)?$|i", $website);
matchar även tecken efter domänen.. där ganska många tecken är tilåtna ex ?&#= mfl..