Gå til innhold

Problemer med htmlspecialchars [LØST]


Anbefalte innlegg

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 :blush:

Endret av Loomy
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...