CruellaDeVille Skrevet 12. november 2006 Del Skrevet 12. november 2006 Hei jeg har forsøkt å lese litt om regulære uttrykk, men mesteparten er litt gresk for meg, kan en si. Jeg har laget dette mønsteret: /^http:\/\/\w+$/ Og jeg tror jeg sier at "hvis input starter (^) på http:// og etterfølges av bokstaver, en til mange og slutter på bokstaver" så har jeg en match. Men det funker ikke. Alle lenkene mine blir mailto-lenker:/ if(preg_match("/^http:\/\/\w+$/", $result['url'])){ $link = "<a href=\"{$result['url']}\">{$result['name']}</a>"; }else if(strcmp($result['url'], "")==0){ $link = ""; }else{ $link = "<a href=\"mailto:{$result['url']}\">{$result['name']}</a>"; } Lenke til kommentar
TorS Skrevet 12. november 2006 Del Skrevet 12. november 2006 \w A single word character - alphanumeric and underscore. \w tar altså bare alfanumeriske karakterer, og vil ikke fungere på f.eks. www.vg.no, siden denne adressen inneholder punktum. Så om du bytter ut \w med noe som inkluderer punktum, bør uttrykket ditt fungere. Lenke til kommentar
Peter Skrevet 12. november 2006 Del Skrevet 12. november 2006 Det spørs litt hva slags URL'er som skal godtas, for man kan jo putte nesten hva som helst i en url, f.eks. %[nummer], /, ?, =, osv. Denne tillater kun selve domenet (tror jeg), kan utvide når jeg vet litt mer nøyaktig hva du vil tillate: (?<=http://)[a-zA-Z0-9æøåÆØÅ.\-_]+ Lenke til kommentar
CruellaDeVille Skrevet 12. november 2006 Forfatter Del Skrevet 12. november 2006 \w A single word character - alphanumeric and underscore. \w tar altså bare alfanumeriske karakterer, og vil ikke fungere på f.eks. www.vg.no, siden denne adressen inneholder punktum. Så om du bytter ut \w med noe som inkluderer punktum, bør uttrykket ditt fungere. 7268744[/snapback] Hmm, ja- det var jammen ikke lett Men du satte meg vel inn på riktig spor. En url inneholder mye mer enn bare bokstaver (eks / og . og _ og ~) Lenke til kommentar
endrebjo Skrevet 12. november 2006 Del Skrevet 12. november 2006 (endret) Jeg fant denne på Zend.com. Jeg synes den var ganske enkel og komplett. /^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\//i Men jeg skjønner ikke hva det siste leddet gjør: (:(\d+))? Det ser forresten ut som at de har utelatt ~, ?, = og andre variabelmerker. Endret 12. november 2006 av endrebjorsvik Lenke til kommentar
MC2 Skrevet 13. november 2006 Del Skrevet 13. november 2006 Hvis jeg ikke tar helt feil så sjekker den bare den første delen, alstå https://www.diskusjon.no/index.php?showtopic=663144 av urlen. Også, hvis jeg ikke tar helt feil, så tillater den ikke små bokstaver, heller ikke url's som inneholder åæø. Heller ikke url's som http://username:password@hostname/ eller ip adresser eller http://localhost men, jeg tar ofte feil også... Lenke til kommentar
endrebjo Skrevet 13. november 2006 Del Skrevet 13. november 2006 /i på slutten gjør den case-insensitive. Og IP-adresser går greit. Men hva gjør det siste leddet? Lenke til kommentar
pej Skrevet 14. november 2006 Del Skrevet 14. november 2006 Men hva gjør det siste leddet?Det er for å matche porter, f.eks :81. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå