Avatar billede downloading Nybegynder
15. december 2005 - 21:34 Der er 5 kommentarer og
1 løsning

link der skal forkortes

Hej.

Hvis der nu er nogle der poster et link i mit forum, så er der jo stor risiko for at det er et langt et.

Mi link må maks være 50 tegn langt.

Det skal altså tjekke om det er det. Er det det, så skal der skrive de første 50 tegn af linket, så et <br> og så resten (altså hvis det vel og mærke ikke er over 50 tegn)...

Hvordan gøres det?
Avatar billede brego Nybegynder
15. december 2005 - 21:41 #1
Brug wordwrap()[1] funktionen. wordwrap($text, 50, "<br />\n", true);

[1] http://dk2.php.net/manual/en/function.wordwrap.php
Avatar billede jakobdo Ekspert
15. december 2005 - 21:42 #2
Jeg bruger denne funktion:

function text_url($str, $target, $css_class)
{
    $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".$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;
}

Du skal så rette 25 => 50!
Avatar billede brego Nybegynder
15. december 2005 - 21:56 #3
jakobdo, jeg vil bare lige pointere at create_function() er ligesom at kalde på eval() - det vil sige at hver gang du kalder den funktion, starter du helt nyt instans af PHP parseren - og det resulterer i MEGET langsomt kode i længden.

Desuden brug af så mange regexp's til så enkelt funktionalitet sårer mine øjne ;)
Avatar billede jakobdo Ekspert
15. december 2005 - 21:59 #4
Jojo, men den kode bruges også til at kode alle tænkelige links til klikbare links!
Så du har da ret i det er overkill i dette sammenhæng! :o)
Avatar billede downloading Nybegynder
15. december 2005 - 22:01 #5
1000 tak for hjælpen...

I skulle vel forresten ikke vide hvordan man søger efter et link i en text string?

Jeg skal søge efter den, og så lave det her, og så erstatte igen.. Glemte jeg helt at skrive, men ellers opretter jeg bare et nyt spørgsmål :-)
Avatar billede jakobdo Ekspert
15. december 2005 - 22:04 #6
Det var jo lige det min funktion kunne bruges til! :o)

Du bruger min funktion som:

$text = "hej med dig, besøg lige: http://www.exp.dk og se noget sejt";
echo text_url($text,"_blank","");
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