Avatar billede hagger Nybegynder
07. januar 2010 - 19:50 Der er 13 kommentarer og
1 løsning

Lav automatisk links i en tekst.

Hej

Jeg vil gerne vide hvordan man automatisk laver "links" til links hvis i forstår mig.. Ligesom man kan her på eksperten, så når man skriver http://www.eksperten.dk så bliver det automatisk klikbart.

Håber i forstår og at i kan hjælpe :)
Avatar billede hagger Nybegynder
07. januar 2010 - 19:51 #1
Forresten så har jeg prøvet med preg_replace, men kunne ikke få det til at virke ordentligt..
Avatar billede jakobdo Ekspert
07. januar 2010 - 20:10 #2
Jeg har fundet dette script tidligere, som jeg så igen har redigeret via en smule hjælp her fra exp.dk

Prøv:

function text_url($str){
    $ins_str = "";
    $ins_str .= " target=\"_blank\"";
   
    $str = preg_replace_callback ("/(ftp|http|https|telnet|news|nntp|file|irc):\/\/([a-z0-9~#&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\%\^\{\}]+)/i", create_function('$matches','if( strlen($matches[2]) > 25 ) $name = substr($matches[2],0,25) . ".."; else $name = $matches[2]; return "<a".$ins_str." href=\"{$matches[1]}://{$matches[2]}\">$name</a>";'),$str);
    $str = preg_replace_callback ("/(\s|tp\:|\(|\[|\&gt;)(www\.)([a-z0-9~#&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\%\^\{\}]+)/i",                    create_function('$matches','if( strlen($matches[3]) > 25 ) $name = substr($matches[3],0,25) . ".."; else $name = $matches[3]; return "<a".$ins_str." href=\"http://$matches[2]$matches[3]\">$name</a>";'), $str);
    $str = preg_replace_callback ("/(\s|tp\:|\(|\[|\&gt;)(ftp\.)([a-z0-9~#&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\%\^\{\}]+)/i",                    create_function('$matches','if( strlen($matches[3]) > 25 ) $name = substr($matches[3],0,25) . ".."; else $name = $matches[3]; return "<a".$ins_str." href=\"ftp://$matches[2]$matches[3]\">$name</a>";'), $str);

  return $str;
}
Avatar billede hagger Nybegynder
07. januar 2010 - 20:22 #3
Det kan jeg ikke få til at virke..
Avatar billede jakobdo Ekspert
07. januar 2010 - 20:35 #4
Og at det ikke virker hos dig, må jo være en fejl i koden.
Dog virker det fint hos mig. :o)

http://codebreaker.dk/exp/897621.php
Avatar billede hagger Nybegynder
07. januar 2010 - 20:47 #5
Nu fik jeg det også til at virke.. Havde lavet en meget dum fejl før.. Mange tak for hjælpen :) Smid svar :)
Avatar billede jakobdo Ekspert
07. januar 2010 - 20:50 #6
svar!
Avatar billede hagger Nybegynder
07. januar 2010 - 21:30 #7
Men egentligt er der stadig en fejl? Der står i koden at den skal være _blank, men prøv at tryk på linket? Den gør det i samme vindue..
Avatar billede hagger Nybegynder
07. januar 2010 - 21:58 #8
Har fundet ud af det :)
Avatar billede jakobdo Ekspert
07. januar 2010 - 22:03 #9
Hvad var fejlen ?
Nu har jeg selv kastet mig over min "gamle" kode og leget lidt for at finde fejlen. :o)
Avatar billede hagger Nybegynder
07. januar 2010 - 22:09 #10
Det der $ins_str virker ikke, så i stedet for <a".$ins_str." som står 3 steder i koden har jeg bare skrevet <a target=\"_blank\" :)
Avatar billede jakobdo Ekspert
07. januar 2010 - 22:11 #11
Tja, det kan man jo også lige så godt. :o)
Avatar billede jakobdo Ekspert
07. januar 2010 - 22:26 #12
Tjek lige: http://codebreaker.dk/exp/897621.php
Der var åbenbart også en fejl ang. at afkorte linkene...
Avatar billede hagger Nybegynder
08. januar 2010 - 14:09 #13
Ok, tak fordi du skriver det :)
Avatar billede hagger Nybegynder
08. januar 2010 - 14:31 #14
Har prøvet det seneste du har skrevet og prøv fx selv at skriv www.eksperten.dk, så skriver den bare www. og den går ind i det forrige ord..

Jeg synes da det andet virker fint med hensyn til at forkorte links også? Det eneste der ikke virker i det andet er at når man skriver www.eksperten.dk (altså uden http://) går den ind i det forrige ord.
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