Loomy Skrevet 23. august 2004 Del Skrevet 23. august 2004 (endret) Bruker følgende funksjon til å oversette URL'er til linker: function url2link($text) { // First match things beginning with http:// (or other protocols) $NotAnchor = '(?<!"|href=|href\s=\s|href=\s|href\s=)'; $Protocol = '(http|ftp|https):\/\/'; $Domain = '[\w]+(.[\w]+)'; $Subdir = '([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?'; $Expr = '/' . $NotAnchor . $Protocol . $Domain . $Subdir . '/i'; $Result = preg_replace( $Expr, "<a href=\"$0\" title=\"$0\" target=\"_blank\">$0</a>", $text); // Now match things beginning with www. $NotAnchor = '(?<!"|href=|href\s=\s|href=\s|href\s=)'; $NotHTTP = '(?<!:\/\/)'; $Domain = 'www\.(.[\w]+)'; $Subdir = '([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?'; $Expr = '/' . $NotAnchor . $NotHTTP . $Domain . $Subdir . '/i'; return preg_replace($Expr, "<a href=\"http://$0\" title=\"http://$0\" target=\"_blank\">$0</a>", $Result); } Problemet er at jeg bruker htmlspecialchars på teksten der det kan befinne seg URL'er - dette fører til at alle &-tegn blir oversatt til & og dette gjør at funksjonen over tror at URL'en er "ferdig" etter &-tegnet, hvis dere skjønner. Kan ta med et eksempel: w*w.dot.com?page=lorem&;ipsum=lipsum (måtte bytte ut en w med * for å ikke få auto-link på den her). Det som er understreket blir selve linken. Hvordan får jeg url2link til å tolke & som et vanlig &-tegn i en link? EDIT: Gah! Selvsagt klarte jeg det selv 2 sek etter å ha postet Endret 23. august 2004 av Loomy 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å