Avatar billede bixen Nybegynder
08. april 2003 - 11:43 Der er 22 kommentarer og
3 løsninger

Begrænset antal bogstaver

Hvordan får man php til kun at hente/vise de første f.eks 30 bogstaver af en TEXT ???
Avatar billede hbhansen Nybegynder
08. april 2003 - 11:44 #1
$text = "tekst på mere end 30 tegn";
$rest = substr($tekst, 0, 30);
http://www.php.net/manual/en/function.substr.php
Avatar billede bixen Nybegynder
08. april 2003 - 11:47 #2
tak skal du have....
Avatar billede bixen Nybegynder
08. april 2003 - 11:48 #3
nej vent lidt....
den skal også sætte 3 punktummer efter, og det er jo ikke så enkelt som jeg troede... skal den jo kun gøre hvis der er mere end 30 bogstaver....
Avatar billede hbhansen Nybegynder
08. april 2003 - 11:50 #4
Har en gang lavet en function der gør det, dog tæller den ord og ikke bogstaver..
Det er jo pænest at der brydes efter et ord og ikke mit i et ord.
function reduceTextString($text, $words=0)
{
    $textString = "";
    $stringArray = explode(" ",$text);

    if (!$words)
        $words = sizeof($stringArray);

    for($i=0;$i<=$words;$i++)
        $textString .= $stringArray{$i}." ";

    if ($words<sizeof($stringArray))
        $textString .= "...";

    return    $textString;
}
Avatar billede bixen Nybegynder
08. april 2003 - 11:55 #5
det skal være efter bogstaver...... ellers kan folk jo bare skrive ET LAAAAAAAAAAAAAAAAANNNNNNNNNNNNNNNGGGGGGGGGGGGGGGGGGGGT ord...
Avatar billede hbhansen Nybegynder
08. april 2003 - 11:57 #6
Så lave funktionen om så den gør følgende :
   
function reduceTextString($text, $chars=0)
{
    $textString = "";
    $stringArray = $text;

    if (!$words)
        $words = sizeof($stringArray);

    for($i=0;$i<=$chars;$i++)
        $textString .= $stringArray{$i}." ";

    if ($chars<sizeof($stringArray))
        $textString .= "...";

    return    $textString;
}

Test det lige, jeg er ikke sikker på at det er helt rigtigt :o)
Avatar billede schaefner Juniormester
08. april 2003 - 11:59 #7
Avatar billede hbhansen Nybegynder
08. april 2003 - 12:12 #8
Ups, fejl det skal være således:
function reduceTextString($text, $chars=0)
{
    $textString = "";
    $stringArray = $text;

    if (!$chars)
        $chars= sizeof($stringArray);

    for($i=0;$i<=$chars;$i++)
        $textString .= $stringArray{$i}." ";

    if ($chars<sizeof($stringArray))
        $textString .= "...";

    return    $textString;
}
Avatar billede bixen Nybegynder
08. april 2003 - 12:13 #9
$words $text ??? hvor skal de komme fra, hvilken er den der skal ændres, og hvor fåes den anden fra...

og disse hvad skal de gøre godt for:

    $textString = "";
    $stringArray = $text;

inputtet er fra MySQL og er $row[tekst] <--- skriv scriptet op om denne, og udelad alt overflødigt...
Avatar billede schaefner Juniormester
08. april 2003 - 12:14 #10
<?php
$short = substr("tekst", 0, 30); // Tager de første 30 tegn af strengen
$pos = strrpos($short, ' '); // Finder positionen for det sidste mellemrum i teksten
$short = substr($short, 0, $pos);
echo "$short"
?>
Avatar billede schaefner Juniormester
08. april 2003 - 12:14 #11
<?php
$short = substr($row[tekst], 0, 30);
$pos = strrpos($short, ' ');
$short = substr($short, 0, $pos);
echo "$short";
?>
Avatar billede hbhansen Nybegynder
08. april 2003 - 12:16 #12
$textString = "";
$chars = 30; // ANTAL ØNSKEDE TEGN
$stringArray = "Lang tekst med over eller under 30 tegn";

if (!$chars)
    $chars= sizeof($stringArray);

for($i=0;$i<=$chars;$i++)
    $textString .= $stringArray{$i}." ";

if ($chars<sizeof($stringArray))
    $textString .= "...";

echo $textString;
Avatar billede schaefner Juniormester
08. april 2003 - 12:16 #13
<?php
$short = substr($row[tekst], 0, 30);
$pos = strrpos($short, ' ');
$short = substr($short, 0, $pos)."...";
echo "$short";
?>
Avatar billede hbhansen Nybegynder
08. april 2003 - 12:18 #14
Har lige testet dette her og det virker:

    $textString = "";
        $chars = 30; // ANTAL ØNSKEDE TEGN
        $stringArray = "Lang tekst med over eller under 30 tegn";

        if (!$chars)
            $chars= strlen($stringArray);

        for($i=0;$i<=$chars;$i++)
            $textString .= $stringArray{$i}." ";

        if ($chars<strlen($stringArray))
            $textString .= "...";

echo $textString;
Avatar billede hbhansen Nybegynder
08. april 2003 - 12:21 #15
Ups, lille fejl:

    $textString = "";
        $chars = 30; // ANTAL ØNSKEDE TEGN
        $stringArray = "Lang tekst med over eller under 30 tegn";

        if (!$chars)
            $chars= strlen($stringArray);

        for($i=0;$i<=$chars;$i++)
            $textString .= $stringArray{$i};

        if ($chars<strlen($stringArray))
            $textString .= "...";

echo $textString;
Avatar billede venne Nybegynder
08. april 2003 - 12:22 #16
Er det ikke bare:

if (strlen(@tekst) > 30)
  $tekst = substr($tekst, 0, 27)."...";

/venne
Avatar billede hbhansen Nybegynder
08. april 2003 - 12:25 #17
venne >> Jow, det kunne man også.. :o) Det er faktisk lidt nemmere..
Min funktion var i bund og grund også bygget til at kunne gøre det samme med ord og ikke karaktere..
Avatar billede exp Juniormester
08. april 2003 - 12:30 #18
Avatar billede schaefner Juniormester
08. april 2003 - 12:31 #19
exp >> Den har jeg lagt et link til ;o)
Avatar billede exp Juniormester
08. april 2003 - 12:32 #20
scheafner >>
Det havde jeg sgu ikke set :-)
Havde lige brugt den i et andet svar, og så gik det lidt stærkt *g*

bixen >>
Bare afvis mit svar :-)
Avatar billede bixen Nybegynder
08. april 2003 - 12:36 #21
venne> smider du et svar.... så deler jeg pointene ligeligt blandt jer...
Avatar billede venne Nybegynder
08. april 2003 - 12:46 #22
Så pyt...

/venne
Avatar billede bixen Nybegynder
08. april 2003 - 17:27 #23
parse error i denne:

if (strlen(@row[tekst]) > 30)
  $tekst = substr($row[tekst], 0, 27)."...";
Avatar billede schaefner Juniormester
08. april 2003 - 22:20 #24
if (strlen($row[tekst]) > 30) {
  $tekst = substr($row[tekst], 0, 27)."...";
}
Avatar billede tipsen Nybegynder
08. april 2003 - 23:30 #25
Du kan også kigge på "ellipsis" i CSS - det er dog ikke standard så vidt jeg husker.
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