Denne tråd er over 6 måneder gammel
Er du sikker på, at du har noget relevant at tilføje?
PHP: Forkorte lange linksAf 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 --
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[...] 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... -- 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... #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... 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. 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. 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 :) -- #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* -- 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... 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... #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 - 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... du har ret, det var bare mit bud :) -- JA!! din mor er til mænd 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. 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. 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. #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... #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. 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. #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... #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.
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
|
Du skal være logget ind for at tilmelde dig nyhedsbrev.
Hvilken udbyder har du til internet? 424 personer har stemt - Mit energiselskab (Ewii f.eks) 11%
|