Avatar billede domaz.dk Novice
04. juni 2004 - 10:50 Der er 16 kommentarer og
1 løsning

forkort link

Jeg har det problem at hvis folk smidder alt for "lange" links i min tagwall ødelægger det designet..
Så jeg ville høre om der ikk er nogen der kender et script der "forkorter linket"... så hvis den f.eks. er over 20 tegn stopper den bare ved de 35 og sætter 3 punktumer (...)

f.eks...

Lang link:
<a href="http://www.thomaslunde.dk/php/kildekoder/oversigt.php?scriptid=4&send=1">http://www.thomaslunde.dk/php/kildekoder/oversigt.php?scriptid=4&send=1</a>

den skal så komme til at se sådan her ud:
<a href="http://www.thomaslunde.dk/php/kildekoder/oversigt.php?scriptid=4&send=1">http://www.thomaslunde.dk/php/kild...</a>
Avatar billede domaz.dk Novice
04. juni 2004 - 10:53 #1
ups...

mener selvf' at hvis den f.eks. er over de 35 tegn stoppe den bare ved de 35 og sætter 3 punktumer (...)
Avatar billede jakobclausen Nybegynder
04. juni 2004 - 10:56 #2
$antal = strlen($link);
        if($antal > 35)
        {
            $new_link = substr("$link", 0, 35);
           
            echo $new_link;
        }
        else
        {
            print("$link");
        }
Avatar billede domaz.dk Novice
04. juni 2004 - 10:56 #3
mit script til at lave det om til et link ser sådan her ud:

function text_url($str, $target, $css_class) {
    $ins_str = "";
    if ($css_class) $ins_str .= " class=\"".$css_class."\"";
    if ($target) $ins_str .= " target=\"".$target."\"";
    $str = text_expand($str);
    $str = preg_replace ("/(ftp|http|https|telnet|news|nntp|file|irc):\/\/([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i", "<a href=\"\\1://\\2\"".$ins_str.">\\1://\\2</a>", $str);
    $str = preg_replace ("/(\s|tp\:|\(|\[|\&gt;)(www\.)([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i", "\\1<a href=\"http://\\2\\3\"".$ins_str.">\\2\\3</a>", $str);
    $str = preg_replace ("/(\s|tp\:|\(|\[|\&gt;)(ftp\.)([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i", "\\1<a href=\"ftp://\\2\\3\"".$ins_str.">\\2\\3</a>", $str);
    return text_reduce($str);
}
Avatar billede jakobclausen Nybegynder
04. juni 2004 - 10:56 #4
NB! $link er variablen der indholder det link du vil skrive ud
Avatar billede jakobclausen Nybegynder
04. juni 2004 - 10:58 #5
med punktum efter linket:
$antal = strlen($link);
        if($antal > 35)
        {
            $new_link = substr("$link", 0, 35);
           
            echo $new_link." ...";
        }
        else
        {
            echo $link;
        }
Avatar billede jakobclausen Nybegynder
04. juni 2004 - 11:05 #6
hehe kunne være det også lige skulle laves som et link:

echo "<a href='".$link."'>".$new_link."</a>";
Avatar billede domaz.dk Novice
04. juni 2004 - 11:07 #7
jakobclausen:

hvordan sætter jeg så det ind i det script som jeg bruger..?
eller er det ikke "bare" noget man sårdan lige kan gøre..?
Avatar billede domaz.dk Novice
04. juni 2004 - 11:30 #8
nåå.. pyt... jeg lavede en "overflow: hidden;" i stedet...
men hvis i kan lave det på den anden måde som jeg beskriver må i stadig meget gerne lige skrive det....
Avatar billede jakobclausen Nybegynder
04. juni 2004 - 11:51 #9
Jeg forstår ikke lige helt hvad dit script gør - så har lidt svært ved det
Avatar billede dennismp Nybegynder
04. juni 2004 - 13:09 #10
ret din første preg_replace til:
    $str = preg_replace_callback ("/(ftp|http|https|telnet|news|nntp|file|irc):\/\/([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i", "text_url_helper",$str);

og tilføj funktionen:
function text_url_helper($matches) {
    $url = $matches[1] . '://' . $matches[2];
    if( strlen($matches[2]) > 25 )
        $name = substr($matches[2],0,25) . '..';
    else
        $name = $matches[2];
    return '<a href="'.$url.'">'.$name.'</a>';
}
Avatar billede dennismp Nybegynder
04. juni 2004 - 13:12 #11
Hovsa, glemte lige de to andre regler. Øjeblik :)
Avatar billede dennismp Nybegynder
04. juni 2004 - 13:26 #12
prøv denne:

function text_url($str, $target=null, $css_class=null) {
    $ins_str = "";
    if ($css_class) $ins_str .= " class=\"".$css_class."\"";
    if ($target) $ins_str .= " target=\"".$target."\"";
    $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 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 href=\"http://$matches[2]$matches[3]\">$name</a>";'), $str);
    #$str = preg_replace ("/(\s|tp\:|\(|\[|\&gt;)(ftp\.)([a-z0-9~#&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i", "\\1<a href=\"ftp://\\2\\3\"".$ins_str.">\\2\\3</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 href=\"ftp://$matches[2]$matches[3]\">$name</a>";'), $str);

    return $str;
}

Behøver ikke ekstra funktioner. Ved ikke om der måske er en nemmere måde.
Avatar billede mungojerrie Nybegynder
04. juni 2004 - 14:07 #13
denne funktion klarer jobbet fint for mig...

    function shortentext($str, $len) {
       
        $str2 = substr($str, 0, $len);
        if(strlen($str) > $len){
            $str2 .= "...";
        }
        return $str2;
    }
Avatar billede dennismp Nybegynder
04. juni 2004 - 14:12 #14
Ja, men det kan du ikke sætte sammen med hans text_url script.
Avatar billede jakobclausen Nybegynder
04. juni 2004 - 15:08 #15
mungojerrie >> Det er meget tæt på det samme, jeg svarede
Avatar billede domaz.dk Novice
05. juni 2004 - 13:30 #16
tak for hjælpen dennismp... det virkede bare perfekt... ;)
Avatar billede jakobdo Ekspert
08. april 2005 - 10:37 #17
Ved det er en meget gammel tråd!
Men jeg benyttede dennismp glimrende eksempel, men fandt ud af at der mangler \% inde i [a-z0-9~#&:;=!',_æøå\(\)\?\/.....

Men så virkede det også perfekt for mig.
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