Avatar billede jenslyn_s Nybegynder
28. august 2006 - 14:17 Der er 5 kommentarer og
1 løsning

Forkorte streng - tage højde for caps

Jeg har en lille funktion som forkorter tekst og smider "..." såfremt den forkortes. Men hvordan får jeg den til at tage højde for caps som jo fylder mere...

$maxChars = 20;
if(strlen($string) > $maxChars){
            $string = substr($string,0,$maxChars).'...';
}
Avatar billede jokkejensen Novice
28. august 2006 - 14:48 #1
Du skal have fat i en monospace skrifttype..

en hvor alle tegn er lige brede : ex Courier - ellers kan du ikke kende bredden på en tekst på forhånd..

/JJ
Avatar billede jokkejensen Novice
28. august 2006 - 14:49 #2
ex

MMMMMMMM
IIIIIIII

er lige langt i editor.. men ikke på "eksperten"
Avatar billede Slettet bruger
28. august 2006 - 15:14 #3
Ellers kan du alternativt kode en funktion i stil med denne:

<?php
// Definerer bogstavbredder
$bogstaver = array("a" => 3, "b" => 4, "i" => 2, "I" => 3); //osv osv

// Streng som skal forkortes
$streng = "Denne streng må kun være X pixels bred.";

// Forkorter streng
$maxlength = 30;
$placering = 0;
while ($totalLength <= $maxlength && $placering <= strlen($streng))
{
$totalLength += $bogstaver[$streng{$placering}];
$resultat .= $streng{$placering};
$placering++;
}
echo $resultat."...";
?>


Det er utestet, skrevet direkte ind her på eksperten, men du burde kunne få en ide om hvad jeg mener.
Bemærk at den skriver "..." efter hver streng, selvom den ikke er forkortet.
Avatar billede jenslyn_s Nybegynder
28. august 2006 - 15:35 #4
Philip, forstår dig godt, gider du lige skrive arrayet helt og korrekt LOL

Tak for svaret - lad os se om jeg gider skrive arrayet.
Avatar billede Slettet bruger
28. august 2006 - 17:38 #5
Takker for points ;)
Jeg er glad for at du kunne bruge mit svar...
Avatar billede skagen Nybegynder
29. august 2006 - 00:18 #6
OK. Dette er måske lidt langt ude, men hvis du ikke er ked af at skyde gråspurve med kanoner, så er der faktisk en måde du kan få bredden på en given tekst.  FPDF (http://www.fpdf.org) er en php-klasse beregnet til at generere pdf-dokumenter. I klassen er der en funktion - GetStringWidth (http://www.fpdf.org/en/doc/getstringwidth.htm) - som kan fortælle bredden af en streng. Funktionen fortæller selvfølgelig hvor meget teksten vil fylde i pdf-dokumentet (i "user units"), men jeg vil tro at denne bredde er direkte proportional med bredden på en web side - du skal bare finde forholdet.

Jeg bruger selv klassen til on-the-fly generering af pdf dokumenter og funktionen til at lave noget specielt alignment af tekster, mm. Det virker helt fint - men jeg har dog ikke forsøgt at overføre tesktbredden i pdf-dokumentet til en bredde på websiden, men som sagt kan jeg ikke se hvorfor det ikke skulle være muligt.
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