18. juni 2006 - 09:59
Der er
4 kommentarer og
1 løsning
Forkorte sætning
Hvordan "forkorter" jeg en sætning?
Jeg har et nyheds script hvor der skal stå
Nyheds titel
nyhed: så søgte jeg på ekspe...
Hvordan laver jeg .. og hvordan bestemmer længden på den sætning?
Hvis du er ligeglad med, om teksten bliver klippet midt i et ord, så prøv:
$nyhed = substr($nyhed, 0, 25) . '...'; // 25 tegn
Skal det være lidt pænere kan du benytte noget lignende:
function klip($tekst, $laengde = 50, $tolerance = 10) // $laengde og $tolerance kan udelades
{
$punktum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), "."); // position af punktum
$mellemrum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), " "); // position af mellemrum
$mere = "..."; // punktummer hvis mere tekst
if (strlen($tekst) <= $laengde + $tolerance) {
$slut_pos = strlen($tekst); // slutposition = slut på tekst, da denne er kortere end $laengde og $tolerance
$mere = ""; // ikke andet
} elseif ($punktum !== false) {
$slut_pos = $laengde-$tolerance+$punktum; // slutposition = punktum
} elseif ($mellemrum !== false) {
$slut_pos = $laengde-$tolerance+$mellemrum; // slutposition = mellemrum
} else {
$slut_pos = $laengde; // slutposition $laengde (ikke noget at gøre - skær ord over)
}
return substr($tekst, 0, $slut_pos) . $mere; // udskriv del + evt. punktummer
}
hvor du kalder den som:
$nyhed = klip($nyhed, 25, 5);
Den vil klippe strengen "nyhed" ved 25tegn +/- 5 tegn => 20-30 tegn