Avatar billede hyperactive Nybegynder
23. marts 2010 - 19:47 Der er 6 kommentarer og
1 løsning

Fjerne alle karakterer efter det sidste mellemrum før tegn nr. 200

Jeg arbejder normalt i .NET men har brug for at ændre et PHP script. Jeg har en variabel $minbeskrivelse, som indeholder en varebeskrivelse. Hvis varebeskrivelsen er på mere end 200 karakterer, har jeg brug for at fjerne teksten efter det sidste mellemrum før karakter nr. 200. Hvordan gør jeg det?
Avatar billede showsource Seniormester
23. marts 2010 - 20:35 #1
F.eks.

<?php

$antal = 80;
$streng = "Her er noget tekst som skal splittes ved sidst fundne mellemrum og må ikke værerr over 80 tegn langt.";

function shorten_str($var,$antal) {

// Sletter space og linieskift før og efter $str
$str = trim($var);

    while(strlen($str) > $antal) {

    // finder sidste mellemrum
    $last = strrpos($str, " ");

        // Hvis mellemrum ikke blev fundet
        if($last === false) {
        return substr($str, 0, $antal);
        }

    $str = substr($str, 0, $last);

    }

return $str;

}

echo $streng."<p>";

echo shorten_str($streng,$antal);

?>
Avatar billede arne_v Ekspert
23. marts 2010 - 20:43 #2
Forslag:

<?php
function wtrunc($s, $w, $dots = true) {
    if(strlen($s) <= $w) {
        return $s;
    } else {
        $i = $w;
        if($dots) $i -= 3;
        while($i > 0 && $s[$i] != ' ') $i--;
        $res = substr($s, 0, $i);
        if($dots) $res = $res . '...';
        return $res;
    }
}

for($w = 30; $w >=4; $w--) {
    echo wtrunc('Dette er en lille test', $w) . "\r\n";
}
for($w = 30; $w >=4; $w--) {
    echo wtrunc('Dette er en lille test', $w, false) . "\r\n";
}
?>
Avatar billede preppydude Nybegynder
23. marts 2010 - 22:03 #3
Her:
<?php
function trimn($str, $maxLength=200) {
    if (mb_strlen($str)>$maxLength) $str = mb_substr($str, 0, $maxLength);
    return mb_substr($str, 0, -mb_strlen(strrchr($str, " ")));
}
?>
Avatar billede preppydude Nybegynder
23. marts 2010 - 22:06 #4
... tilføjede lige det med de 3 dots, hvis det var noget du ville have:
<?php
function trimn($str, $maxLength=200, $addDots=false) {
    if (mb_strlen($str)>$maxLength) $str = mb_substr($str, 0, $maxLength);
    else return $str;
   
    return mb_substr($str, 0, -mb_strlen(strrchr($str, " "))).(($addDots)?"...":"");
}
?>
Avatar billede arne_v Ekspert
26. april 2010 - 03:12 #5
hyperactive?
Avatar billede hyperactive Nybegynder
26. april 2010 - 08:50 #6
Sorry - kom fra det igen - arne_v - lægger du et svar så får du point, da det var din løsning der blev brugt.
Avatar billede arne_v Ekspert
26. april 2010 - 15:06 #7
svar
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

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