Avatar billede d.kryger Praktikant
14. marts 2011 - 11:14 Der er 6 kommentarer og
1 løsning

Forkort klikbar tekst i link

Hej eksperter.

Jeg bruger følgende funktion til at lave automatisk links i mit debatforum. Men jeg kunne godt tænke mig at den tekst som bliver til et link kun var X antal tegn langt, hvorefter det blev erstattet af f.eks. "..." (ligesom her på eksperten.dk).

Koden er en jeg har fundet på en side (kan ikke huske hvor - måske her på eksperten), så jeg aner ikke rigtig hvad den gør hvor...

Kan nogen hjælpe?

Kode:
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~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+[a-z0-9~#%@&:;=!',_æøå\(\)\?\/\-\+\[\]\|\*\$\^\{\}]+)/i", "<a href=\"\\1://\\2\"".$ins_str.">\\1://\\2</a>", $str);
$str = preg_replace ("/(\s|tp\:|\(|\[|\&gt;)(www\.)([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+[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~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+[a-z0-9~#%@&:;=!'_æøå\(\)\?\/\-\+\[\]\|\*\$\^\{\}]+)/i", "\\1<a href=\"ftp://\\2\\3\"".$ins_str.">\\2\\3</a>", $str);
$str = preg_replace ("/([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6})/i", "<a href=\"mailto:\\1\"".$ins_str.">\\1</a>", $str);
return text_reduce($str);
}

function text_expand($str)
{
return " ".$str." ";
}

function text_reduce($str)
{
return substr($str, 1, -1);
}

print text_url($beskrivelse,"_blank",'');
Avatar billede phoenix93 Nybegynder
15. marts 2011 - 10:05 #1
kan du ikk bruge et if stament hvor du tjekker veriablen længte med strlen() ?
Hvis den så er over x antal teng gør du så noget andet istedet for.
f.eks. hvor $vnavn er din veriable

if(strlen($vnavn)<50)
{
    // Din kode her
}
else{
    echo "Dit link må max indholle 50 chars.";
}

.. eller noget i den stil.
Avatar billede d.kryger Praktikant
15. marts 2011 - 13:24 #2
Linkene må være lige så lange som de nu engang er, det kan jeg jo ikke lave om på...

Men det skal være lige som her på eksperten hvor den automatisk forkorter det viste link, men linker til hele linket...

F.eks. http://www.b.dk/globalt/lysene-er-slukket-i-tokyo

Når du ser ovenstående link, så ser du ikke hele linket, men hvis du holder muser over, så er det det lange link som der henvises til...

Kan nogen hjælpe med det?
Avatar billede phoenix93 Nybegynder
15. marts 2011 - 13:41 #3
Nu er det her lige efter hovde så ved ikk helt om det ville virke men du kunne måske prøve og lave dit link om til en veriable og så sig i php:

$linkv = "http://www.eksperten.dk/spm/934099#reply_7750251"; // Bare et test link

if(strlen($linkv)<=24){
    echo "<a href='".$linkv."'>http://www.eksperten.dk/ (..)</a>";
}else {
    echo "a href='".$linkv."'>".$link."'</a>";
}

http://www.eksperten.dk/ ind holde 24 chars derfor er <= sat til 24.
Hvis hvores stament så er længer end 24. F.eks. http://www.eksperten.dk/search?q=php så vil den stadig holde linket men den vil vise http://www.eksperten.dk/ (..) istedet for.
Du kan sef ænder taltet og din besked så den passer til dig.
Håber det hjalp^^
Avatar billede d.kryger Praktikant
15. marts 2011 - 14:47 #4
Problemet/udfordringen er at min variabel "$kommentar" f.eks. kunne se sådan ud:

Her er min kommentar - kig lige på http://www.b.dk/globalt/lysene-er-slukket-i-tokyo her er mere at min kommentar.

Med ovennævnte funktion bliver linket automatisk til et link, men teksten imellem <a href=''> og </a> skal blot være på x antal tegn...

Jeg håber jeg har forklaret mig rigtig nu...
Avatar billede phoenix93 Nybegynder
15. marts 2011 - 16:03 #5
Jeg detsværer ikk helt hva man skulle der men jeg vil da gærne prøve og se om jeg kan bygger et script der kan hjælpe dig med dit problem.
Men lige nu kan jeg desværer ikk hjælpe dig. Lad os bare håber der er en eller anden her inde som er lidt smart og ved hvad man skal gøre.
Men jeg skal nok kigge på det.
Avatar billede d.kryger Praktikant
07. april 2011 - 10:23 #6
Det ser ikke ud til at der er andre som kan hjælpe, så hvis du ligger et svar så vil jeg gerne give dig point for din hjælp...
Avatar billede phoenix93 Nybegynder
07. april 2011 - 12:18 #7
Tak for det.
Håbder du finder en løsning på dit problem.
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