Seneste forumindlæg
Køb / Salg
 * Uofficiel Black/White liste V3
Login / opret bruger

Forum \ Programmering og webdesign \ Programmering
Denne tråd er over 6 måneder gammel

Er du sikker på, at du har noget relevant at tilføje?

PHP: Forkorte lange links

Af Maxi Supporter Jace | 05-12-2006 19:55 | 1312 visninger | 22 svar, hop til seneste
Heay Jeg kom lige til at paste et meget langt link på min blog: http://www.jacobworsoe.dk[...] Jeg har set nogle sites f.eks. her på hol.dk hvor lange links bliver "beskåret" så den kun viser de første 40 tegn og resten bliver så omdannet til 3 punktummer så man kan se at linket i virkeligheden er meget længere. Derved ville mit link komme til at se således ud: http://pop.pcpop.com[...] Nogen der ved hvordan man laver det i PHP? Mvh Jace
--
http://www.jacobworsoe.dk[...] Hvis man skal gøre noget, så skal man gøre det ordentligt, ellers skal man lade være...
#1
Jepper(mac)
Juniorbruger
05-12-2006 20:57

Rapporter til Admin
Nu må du ikke hænge mig op på det. Er lang tid siden jeg har lavet php, men du kunne evt. bruge substr til at forkorte linket. Noget i stil med: substr('kæmpelangtlink', 0, 40); mere: http://dk2.php.net[...] I dit tilfælde vil det så kræve at det er et "aktivt" link, hvor det kun er selve navnet på linket du forkorter.
--
"Livet er smukt set gennem sprækken mellem madrassen og dynen" - Garfield VLC media player kan afspille (næsten) alt: http://videolan.org[...]
#2
Kvist
Megabruger
05-12-2006 21:15

Rapporter til Admin
Jeg ville evt. lave det ved at lægge linket i en tabel en en MySQL database, hvor hvert link har et id nr, og når man så klikker på linket, så åbner den en redirect side, som henter linket i databasen, og sender en videre til den side. Måske lidt bøvlet, men det ville være mit umidelbarte bud...
--
#3
Jace
Maxi Supporter
05-12-2006 21:20

Rapporter til Admin
Okay. Mit link er dog en del af hele den streng som indeholder nyheden. Så det kræver lige en while-loop, der finder alle links og tjekker deres længde. Men tak for hjælpen indtil videre :)
--
http://www.jacobworsoe.dk[...] Hvis man skal gøre noget, så skal man gøre det ordentligt, ellers skal man lade være...
#4
Jace
Maxi Supporter
05-12-2006 21:21

Rapporter til Admin
#2 - Okay, men det kræver vel igen at man har linket som en selstændig variabel, og ikke som en del af en længere streng.
--
http://www.jacobworsoe.dk[...] Hvis man skal gøre noget, så skal man gøre det ordentligt, ellers skal man lade være...
#5
tjens
Mega Supporter
05-12-2006 21:29

Rapporter til Admin
Håber jeg kan lave visning af html på hol herunder: Du kender sikker ret godt den html, der skal til: <a h ef="abcdf.dk/subdir/endnuetdir/siden.php?parameter=nogetandetlangt">abcdef.dk/subdir...</a> Opgaven må være at lave en find/replace rutine der finder de lange links og laver dem om til overstående, inden din PHP outputter til browserenm som du selv nævner i #3
--
>--- http://tjens.dk[...] ---< Her kan du let formattere dine indkøbslister, så de kan fremvises pænt i trådene her på HOL.
#6
tjens
Mega Supporter
05-12-2006 21:30

Rapporter til Admin
Det gik jo meget godt bortset fra at HREF blev klippet ved R
--
>--- http://tjens.dk[...] ---< Her kan du let formattere dine indkøbslister, så de kan fremvises pænt i trådene her på HOL.
#7
Stfn
Bruger Aspirant
05-12-2006 21:36

Rapporter til Admin
hmm ville mene du skal have fat i noget regular expressions. prøv at kigge på: http://dk2.php.net[...] når du så har fundet et link skal det erstattes med noget i stil med forslaget i svar #1 altså sub_str(); god fornøjelse :)
--
#8
Kvist
Gigabruger
05-12-2006 21:38

Rapporter til Admin
#4 Jeg går ud fra at du har tænkt dig at gemme indlæggene i en database, så er det da bare at lave det sådan, at når indlæget bliver oprettet med et link i, så erstatter den linket med noget tekst, og et id nr, samtidig med at den gemmer linket i en anden tabel. Når så indlæget skal indlæses, så skal du bare sætte den til at tjekke om der er noget tekst, som står i stedet for et link, hvis der er det så skal den gå ind, og hente linket i tabellen, og kun skrive de første 40 tegn ud, og så bare sætte den til at linke til det hele. Hey, nu fik jeg lige en anden ide. Du kan vel også lave det sådan at den gemmer hele indlæget, med fuld link osv. i databasen, når så den henter indlæget, så skal den tjekke om der er nogle links, hvis der er, så skal den forkorte teksten som står i linket, (evt. som #1 skriver), men stadig linke til den rigtige side. Lyder lidt indviklet, men kommer lige med et eksempel: *masse tekst i et indlæg* *fuld link* * masse tekst* sdfsfASDGWG sedgsdfhwr http://www.edbpriser.dk[...] ewdsgwergd. Når så siden skal vises så laver den det om så der kommer til at stå noget lignende: *masse tekst* <a href=" http://www.edbpriser.dk[...] * masse tekst*
--
#9
Jace
Maxi Supporter
05-12-2006 21:40

Rapporter til Admin
Jeg fandt denne funktion på http://www.razor.dk[...] <?php function url2link($str) { return eregi_replace("((f|ht)tps?://)([a-z0-9@:%_.~#-?&-]+)((=|[a-z0-9]|?|&|/|.|-|:|æ|ø|å)+){0,}", "<a href="\0">\0</a>", $str); } ?> Den virker ganske glimrende. Skal dog lige finde ud af hvorfor den stopper ved + med at lave til links. Det kan ses hvis man åbner siden i IE: http://www.jacobworsoe.dk[...] Den kræver nok lidt arbejde. De regular expressions er sku noget indviklede at gennemskue og rette i :)
--
http://www.jacobworsoe.dk[...] Hvis man skal gøre noget, så skal man gøre det ordentligt, ellers skal man lade være...
#10
Jace
Maxi Supporter
05-12-2006 21:43

Rapporter til Admin
Ups, det var det med at lave klikbare links. Forkert tråd, sorry :P
--
http://www.jacobworsoe.dk[...] Hvis man skal gøre noget, så skal man gøre det ordentligt, ellers skal man lade være...
#11
Jace
Maxi Supporter
05-12-2006 21:46

Rapporter til Admin
#8 - Ja, jeg kan godt lidt dit 2. forslag. Så det må blive noget med at gå ind og søge på "HTTP" eller "WWW" i teksten, og så outputte det i forkortet udgave.
--
http://www.jacobworsoe.dk[...] Hvis man skal gøre noget, så skal man gøre det ordentligt, ellers skal man lade være...
#12
ezu
Supporter
05-12-2006 22:00

Rapporter til Admin
du kunne også bare linke til http://pop.pcpop.com[...] ikke nær så langt...
--
JA!! din mor er til mænd
#13
Jace
Maxi Supporter
05-12-2006 22:21

Rapporter til Admin
#12 - Ja, det er rigtigt nok, men det er bare ikke altid det kan lade sig gøre :)
--
http://www.jacobworsoe.dk[...] Hvis man skal gøre noget, så skal man gøre det ordentligt, ellers skal man lade være...
#14
ezu
Supporter
05-12-2006 23:00

Rapporter til Admin
du har ret, det var bare mit bud :)
--
JA!! din mor er til mænd
#15
tjens
Mega Supporter
05-12-2006 23:15

Rapporter til Admin
Jeg har skrevet en rutine i javascript, der laver en tekst med links om til klikbare links og samtidig forkorter de lange links: http://tjens.dk[...] Den tester på http:// i starten og en blank i slutningen. Du kan højreklikke og læse sidens source for at se rutinen, og så måske skrive den om til PHP.
--
>--- http://tjens.dk[...] ---< Her kan du let formattere dine indkøbslister, så de kan fremvises pænt i trådene her på HOL.
#16
tjens
Mega Supporter
05-12-2006 23:21

Rapporter til Admin
Mit webhotel flytter i nat, og tjens.dk er nu nede. Jeg havde ellers lige ftp'et og testet adgangen. Sådan kan det gå.
--
>--- http://tjens.dk[...] ---< Her kan du let formattere dine indkøbslister, så de kan fremvises pænt i trådene her på HOL.
#17
tjens
Mega Supporter
05-12-2006 23:41

Rapporter til Admin
Har nu lagt en kopi her: http://medlem.jubii.dk[...] Desværre viser siden reklamer nogen sekunder i starten, og ved højreklik bliver mit script fedtet ind i reklamescriptet.
--
>--- http://tjens.dk[...] ---< Her kan du let formattere dine indkøbslister, så de kan fremvises pænt i trådene her på HOL.
#18
Jace
Maxi Supporter
06-12-2006 00:44

Rapporter til Admin
#17 - Mange tak. Jeg ved ikke så meget om javascript, men kan du ikke bare paste det her? Eller vil sitet så forsøge at udføre koden? :) Ellers kan man vel lave det i en text fil og zip det inden man smider det op på en upload-service :) Men mange tak.
--
http://www.jacobworsoe.dk[...] Hvis man skal gøre noget, så skal man gøre det ordentligt, ellers skal man lade være...
#19
tjens
Mega Supporter
06-12-2006 09:56

Rapporter til Admin
#18 Nu virker min egen side igen, så du kan højreklikke på siden og læse scriptet. Jeg har lavet en ny version, der demonstrerer det i mere praktisk brug: http://tjens.dk[...] Hvis du gør det på denne måde, er du fri for at tænke på at omformattere dine blog indlæg inden du gemmer dem på din server. Du skal blot includere en javascriptfil på siden, og så kalde rutinen men en parameter, der fortæller navnet på den del af siden, der skal have indsat links. I ovenstående eksempel er det en div sektion i html'en der behandles. Denne metode, med ændring af tekst i browseren, bruges af tomshardware,com og anandtech.com, når de skal lave udvalgte ord om til links i deres artikler: Links bliver indsat i siden af en rutine som gennemlæser artiklen når du henter den.
--
>--- http://tjens.dk[...] ---< Her kan du let formattere dine indkøbslister, så de kan fremvises pænt i trådene her på HOL.
#20
tjens
Mega Supporter
06-12-2006 10:12

Rapporter til Admin
Off topic til Jacob: hvordan har du lavet linket i din profil clickable her på HOL? Jeg synes ikke rigtig, at link knappen ved profilredigering har nogen effekt.
--
>--- http://tjens.dk[...] ---< Her kan du let formattere dine indkøbslister, så de kan fremvises pænt i trådene her på HOL.
#21
Jace
Maxi Supporter
06-12-2006 11:59

Rapporter til Admin
#20 - Har ikke gjort noget som helst :) Sådan var den bare da jeg pastede linket.
--
http://www.jacobworsoe.dk[...] Hvis man skal gøre noget, så skal man gøre det ordentligt, ellers skal man lade være...
#22
tjens
Mega Supporter
06-12-2006 17:59

Rapporter til Admin
#18 Har du fået kigget på om du kunne bruge det, ud fra de 2 demo sider jeg har lagt ud? Ellers er javascript koden herunder. Så kan du evt skrive den om til PHP. Det er jo kun lidt find/substring der skal til. function shortenlink(text) { if (text.length==0) { return ""; } // find start of URL var i_start = text.indexOf(" http://"); if (i_start==-1) { return text; } // identify characters that indicate end-of-url: var i_len = text.substr(i_start).indexOf("<"); if (i_len == -1) i_len = text.substr(i_start).indexOf(" "); // No end found: rest of text must be a link: if (i_len == -1) i_len = text.length-i_start; var i_end = i_start + i_len; if (i_len > 33) { // long link return text.substr(0, i_start) + '<a href="' + text.substr(i_start, i_len) + '">' + text.substr(i_start, 33 ) + '...</a>' + shortenlink(text.substr(i_end) ); } //short link return text.substr(0, i_start) + '<a href="' + text.substr(i_start, i_len) + '">' + text.substr(i_start, i_len ) + '</a>' + shortenlink(text.substr(i_end) ); }
--
http://tjens.dk[...] Her kan du let formattere dine indkøbslister, så de kan fremvises pænt i trådene her på HOL.

Opret svar til indlægget: PHP: Forkorte lange links

Grundet øget spam aktivitet fra gæstebrugere, er det desværre ikke længere muligt, at oprette svar som gæst.

Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.

Opret bruger | Login
NYHEDSBREV
Afstemning