Avatar billede lerchedahl Nybegynder
23. oktober 2004 - 16:09 Der er 10 kommentarer og
1 løsning

afkort lang sætning

Hej eksperter

Jeg har en liste over artikeloverskrifter som af og til bliver lidt lange. Det ser ikke så fedt ud når de brydes af et linieskift så jeg kunne godt tænke mig en løsning hvor titlen bliver afbrudt og der tilføjes "..." hvis den er for lang til at stå på linien.

Jeg bruger den her stump kode til at skrive overskriften:

echo "\t<li><a href=\"".$itemlink."\">".strip_tags($msg['title'])."</a> .".$msg['total']."</li>\n";

Altså, hvis det er svært at forstå så prøver jeg lige med et eksempel. Hvis nu en titel lød "Hist hvor vejen slår en bugt", skulle den ændres til "Hist hvor vejen..."

Jeg ved ikke om titlen skal begrænses af et antal karakterer eller inline-elementet skal begrænses af et antal pixels, og det er for så vidt også ligegyldigt, bare det fungerer :)

På forhånd tak for hjælpen
Mvh
lerchedahl
Avatar billede bromer Nybegynder
23. oktober 2004 - 16:36 #1
Du kan bruge substr().

<?
echo "\t<li><a href=\"".$itemlink."\">".substr(strip_tags($msg['title']),0,50)."...</a> .".$msg['total']."</li>\n";
?>

Så er det kun de første 50 tegn der bliver skrevet.
Avatar billede lerchedahl Nybegynder
23. oktober 2004 - 16:39 #2
Mange tak for svaret.

Men hvad så hvis der er en overskrift der fylder mindre end 50 tegn?

Så skal der jo ikke tilføjes "..."

Hvordan klares den?

Mvh
lerchedahl
Avatar billede bromer Nybegynder
23. oktober 2004 - 16:46 #3
Right..

<?
$headline = strip_tags($msg['title']);
$max = 50;
if (strlen($headline) > $max)) {
  $headline = substr($headline,0,50) . "...";
}
echo "\t<li><a href=\"".$itemlink."\">".$headline."...</a> .".$msg['total']."</li>\n";
?>
Avatar billede hmortensen Nybegynder
23. oktober 2004 - 16:47 #4
$msg['title'] = strip_tags($msg['title']);
if (strlen($msg['title']) > 50)
$msg['title'] = substr($msg['title'], 0, 50)."...";
echo "\t<li><a href=\"".$itemlink."\">".$msg['title']."</a> .".$msg['total']."</li>\n";
Avatar billede lerchedahl Nybegynder
23. oktober 2004 - 16:47 #5
ok, jeg prøver det lige af
Avatar billede hmortensen Nybegynder
23. oktober 2004 - 16:48 #6
bromer, hvis du vil ha en variabel på til at sætte længde, skal du jo også bruge variabelen i subtr()
$headline = substr($headline,0,$max) . "...";
Avatar billede bromer Nybegynder
23. oktober 2004 - 16:51 #7
hmortensen: ja.. det er klart.. bare en skrivefejl fra min side :)

<?
$headline = strip_tags($msg['title']);
$max = 50;
if (strlen($headline) > $max)) {
  $headline = substr($headline,0,$max) . "...";
}
echo "\t<li><a href=\"".$itemlink."\">".$headline."...</a> .".$msg['total']."</li>\n";
?>
Avatar billede hmortensen Nybegynder
23. oktober 2004 - 16:53 #8
Og prikkerne væk fra echo sætningen, så er den ved at være der :)
echo "\t<li><a href=\"".$itemlink."\">".$headline."</a> .".$msg['total']."</li>\n";
Avatar billede lerchedahl Nybegynder
23. oktober 2004 - 17:01 #9
hmm, jeg får en parse error - hvad er det mon jeg ikke må?

$first=true;
      global $blog;
      while ($msg = mysql_fetch_assoc ($query)) {
        $itemlink = fancyTitle($msg['itemid'],$msg['iurltitle'],$msg['itime']);
        $num++;
        if ($first) {
          echo "<ul>\n";
          $first=false;
        }

$headline = strip_tags($msg['title']);
$max = 30;
if (strlen($headline) > $max)) {
  $headline = substr($headline,0,$max) . "...";
}
echo "\t<li><a href=\"".$itemlink."\">".$headline."</a> .".$msg['total']."</li>\n";

      }
    if (!$first) echo "</ul>\n";
Avatar billede hmortensen Nybegynder
23. oktober 2004 - 17:05 #10
if (strlen($headline) > $max) {

sluttede en parantes en gang for meget
Avatar billede lerchedahl Nybegynder
23. oktober 2004 - 17:10 #11
Fornemt! I skal ha mange tak for hjælpen.

Mvh
lerchedahl
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