Avatar billede dj-hupi Nybegynder
08. marts 2009 - 16:00 Der er 1 kommentar og
1 løsning

preg_replace, skal tage højde for <a>

Hejsa.

Jeg har en:
$txt2 = preg_replace("#((?:https?|ftp)://[\w./?=&\#%-_]+(?!\.))#i","<a href='$1' target='_blank'>Link</a>", $txt);
Kom skriver alle links om. Men jeg vil gerne havde den tager højde for hvis der allerede er lavet et link i teksten. Så det ikke ender som dette:
http://url.dk/forum/%3Ca%20href=%27http://url.dk/billeder/398_3c6c15bbd8.png%27%20target=%27_blank%27%3ELink%3C/a%3E

Nogen som har en ide?
Avatar billede chrisbuchholz Nybegynder
08. marts 2009 - 19:57 #1
En løsning ville være at sige, i den regulære udtryks streng at der skal være et mellemrum foran og bagved en url.

En anden ville være f.eks. at smide htmlspecialchars på $txt, for at eliminere html i den, så html blot vil blive udskrevet som tekst og ikke opfattet som html.


Udover det er jeg lidt blank.
Avatar billede dj-hupi Nybegynder
19. april 2009 - 15:16 #2
Fandt :

function transformUrl($str){
    $str=eregi_replace("(^| |>)(www([.]?[a-zA-Z0-9_/-?])[^<]*)", "\\1<a href=\"http://\\2\" target=\"_blank\">Link</a>", $str);
    $str=eregi_replace("(^| |>)(http://www([.]?[a-zA-Z0-9_/-?])[^<]*)", "\\1<a href=\"\\2\" target=\"_blank\">Link</a>", $str);
    $str=eregi_replace("(^| |>)(http://([.]?[a-zA-Z0-9_/-?])[^<]*)", "\\1<a href=\"\\2\" target=\"_blank\">Link</a>", $str);
    return $str;
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester