Avatar billede JJ77 Juniormester
23. november 2006 - 21:11 Der er 13 kommentarer og
1 løsning

få tekst links til at blive rigtige links

Jeg har en side som henter noget tekst op fra en database med php. Mit problem er at når der i teksten fx står www.blabla.dk vises linket kun som tekst. Kan man få denne tekst til at blive vist som et link man kan trykke på og åbne en ny side?
Avatar billede michaeltryl Seniormester
23. november 2006 - 21:14 #1
prøv at se dette spørgsmål der kan du finde svaret
http://www.eksperten.dk/spm/745330
Avatar billede JJ77 Juniormester
23. november 2006 - 21:23 #2
Har nu fundet nedenstående, men er det ikke lidt voldsomt for bare at lave ting som begynder med www. til links?

function url2link($txt)
    {
        $username = "[a-z0-9_\-]+";
        $password = "[a-z0-9_\-!#]+";
        $host = "[a-z0-9\-]+\.[a-z0-9\-\.]+";
        $port = "\d{1,5}";
        $path = "\/[a-z0-9\/\-_\.\(\)\%#]*";
        $querystr = "\?[a-z0-9&=\-_\.%\(\)#]+";
        $proto = "(https?|ftp):\/\/";
        $url = "$host(:$port)?($path($querystr)?)?";
        $protodomain = "/$proto(($username(:$password)?@)?$url)/i";
        $domain = "/(^| )(www\.$url)/im";
        $protomail = "/mailto:($username@$host)/i";
        $mail = "/(^| )($username@$host)/im";
        $replacements = array(
                $protodomain => "<a href=\"\\0\" target=\"_blank\">\\2</a>"
                ,$domain => "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>"
                ,$protomail => "<a href=\"\\0\">\\1</a>"
                ,$mail => "\\1<a href=\"mailto:\\2\">\\2</a>"
            );
        return preg_replace( array_keys( $replacements ), array_values( $replacements ), $txt );
    }
Avatar billede sibbelone Nybegynder
23. november 2006 - 21:31 #3
har du style sheet til at styre designet
Avatar billede michaeltryl Seniormester
23. november 2006 - 21:31 #4
den fanger også mail adresse og adresser der starter med htt:// og nogen andre ting
men vil du kun fange dem der starter med www
kan jeg ikke hjælpe
Avatar billede masik7 Nybegynder
23. november 2006 - 21:42 #5
$pattern = "/((f|ht)tps?:\/\/)([a-z0-9@:%_.~#\-\?&-]+)((\=|[a-z0-9]|\?|&|\/|\.|-|:|æ|ø|å)+)*/";
$replacement = "<a href=\"\\0\" title=\"Besøg \\0\" target=\"_blank\">\\3</a>";
$besked = preg_replace($pattern, $replacement, $besked);
Avatar billede masik7 Nybegynder
23. november 2006 - 21:45 #6
Hov, prøver igen:
funktion link($besked){
$pattern = "/(www\.)([a-z0-9@:%_.~#\-\?&-]+)((\=|[a-z0-9]|\?|&|\/|\.|-|:|æ|ø|å)+)*/";
$replacement = "<a href=\"http://\\0\" title=\"Besøg \\0\" target=\"_blank\">\\0</a>";
$besked = preg_replace($pattern, $replacement, $besked);
return $besked;
}
Avatar billede JJ77 Juniormester
23. november 2006 - 21:45 #7
masik7... skal functionen så se således ud?

function url2link($txt)
    {
        $pattern = "/((f|ht)tps?:\/\/)([a-z0-9@:%_.~#\-\?&-]+)((\=|[a-z0-9]|\?|&|\/|\.|-|:|æ|ø|å)+)*/";
$replacement = "<a href=\"\\0\" title=\"Besøg \\0\" target=\"_blank\">\\3</a>";
$besked = preg_replace($pattern, $replacement, $besked);
    }
Avatar billede masik7 Nybegynder
23. november 2006 - 21:46 #8
Eller den, jeg lige har skrevet ;). Vi trykkede nok på send på samme tid ;)
Avatar billede masik7 Nybegynder
23. november 2006 - 21:48 #9
Den virker med www. Altså hvis du fx skriver www.whatever.bla
Avatar billede JJ77 Juniormester
23. november 2006 - 21:51 #10
her kan du se hvor jeg får skrevet teksten ud.. det er variablen 'supplerendeTekst'
skal det så stadig se sådan ud??

<tr>
  <td width=\"490\" valign=\"top\"><span class=\"mellem\">".$raekke['produkt']."</span> <br><span class=\"lille\">".$raekke['supplerendeTekst']."</span></td>
  </tr>
Avatar billede JJ77 Juniormester
23. november 2006 - 22:11 #11
Kan det passe der er en fejl i nedenstående funktion? den vil ikke acceptere den

function link($besked){
$pattern = "/(www\.)([a-z0-9@:%_.~#\-\?&-]+)((\=|[a-z0-9]|\?|&|\/|\.|-|:|æ|ø|å)+)*/";
$replacement = "<a href=\"http://\\0\" title=\"Besøg \\0\" target=\"_blank\">\\0</a>";
$besked = preg_replace($pattern, $replacement, $besked);
return $besked;
}
Avatar billede mcardle Nybegynder
24. november 2006 - 03:30 #12
Har du husket at lave det om til:

function link($besked){
$pattern = "/(www\.)([a-z0-9@:%_.~#\-\?&-]+)((\=|[a-z0-9]|\?|&|\/|\.|-|:|æ|ø|å)+)*/";
$replacement = "<a href=\"http://\\0\" title=\"Besøg \\0\" target=\"_blank\">\\0</a>";
$besked = preg_replace($pattern, $replacement, $besked);
return $besked;
}

link($raekke["supplerendeTekst"]);

<tr>
  <td width=\"490\" valign=\"top\">
    <span class=\"mellem\">".$raekke['produkt']."</span><br>
    <span class=\"lille\">".$besked."</span>
</td>
</tr>
Avatar billede JJ77 Juniormester
24. november 2006 - 09:45 #13
Jeg fik det til at virke med nedenstående... tror faktisk at man ikke må kalde en function for link... det virkede da ihvertfald først efter jeg omdøbte det til noget andet.. men takker mange gange, og masik, smider du ikke lige et svar;-)


function www_tilLink($besked){
$pattern = "/(www\.)([a-z0-9@:%_.~#\-\?&-]+)((\=|[a-z0-9]|\?|&|\/|\.|-|:|æ|ø|å)+)*/";
$replacement = "<a href=\"http://\\0\" title=\"Besøg \\0\" target=\"_blank\">\\0</a>";
$besked = preg_replace($pattern, $replacement, $besked);
return $besked;
}


.www_tilLink($raekke['supplerendeTekst']).
Avatar billede masik7 Nybegynder
24. november 2006 - 14:31 #14
Okay ;)

Og ja, jeg glemte lige at man ikke kan kalde den for link, da det er en indbygget funktion ;).
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