Avatar billede tbsandau Novice
30. oktober 2004 - 17:07 Der er 8 kommentarer og
2 løsninger

Max antal tegn

Hvordan kan man gøre så den tekst der bliver vist fra ens mysql tabel kun er på 200 tegn og er efterfulgt af ... [Læs mere] Hvor man så kan klikke sig ing og læse hele teksten?!
Avatar billede macfreak Nybegynder
30. oktober 2004 - 17:09 #1
I asp er det kommandoen Left(var) som gør det, så kig efter noget lign i php vel? :-)
Avatar billede specialty Nybegynder
30. oktober 2004 - 17:16 #2
Du kan i PHP bare skrive

echo substr($text, 0, 200) . "... [Læs Mere]";
Avatar billede bromer Nybegynder
30. oktober 2004 - 17:17 #3
I MySQL er der netop som macfreak siger en LEFT(), som tager de første x tegn af en streng, se http://dev.mysql.com/doc/mysql/en/String_functions.html

Ellers er der substr i PHP som gør det samme, se http://www.php.net/manual/en/function.substr.php

Rune
Avatar billede specialty Nybegynder
30. oktober 2004 - 17:17 #4
Det var selvfølgelig et svar =)
Avatar billede tbsandau Novice
30. oktober 2004 - 17:28 #5
Tak for svarende i 2... Har delt pointene i mellem jer!
Avatar billede bromer Nybegynder
30. oktober 2004 - 17:28 #6
super.. tak
Avatar billede fojensen Nybegynder
30. oktober 2004 - 23:17 #7
svarene er sådan set rigtige, men kan ikke bruges hvis teksten indeholder links, for så er der risiko man at bryde teksten midt i <a href = "linkfil.php" titl [læs mere...]

det vil betyde at resten af siden også er indgår i linken til der et andet sted kommer en </a>

mvh Folmer
Avatar billede fojensen Nybegynder
30. oktober 2004 - 23:36 #8
fandt lige nogle funktioner jeg bruger til at afkorte lange tekster der kan indeholde links, og som laver afkortningen lige efter en evt. link.

Det kompenserer også for om eksempelvis 60 tegn af de 200 tegn man vil vise er kode til links tidligere i teksten, så lægges der 60 tegn til 200.

Der toges også højde for at teksten kan inde holde &aelig;, &oslash; eller &aring; i stedet for æ, ø og å, for så vil der også gå kage i det ved deling midt i disse.

// funktioner til afkortning af tekst...

function lav_aeoeaa($str) { // laver specialtegn om til æøå
$search = array ("'&aelig;'si", "'&oslash;'si", "'&aring;'si", "'&ouml;'si", "'&AElig;'si", "'&Oslash;'si", "'&Aring;'si", "'&Ouml;'si");
$replace = array ("æ","ø","å","ö","Æ","Ø","Å","Ö");
$str = preg_replace ($search, $replace, $str);
        return $str;
}

function afkort_leangde($tekst,$laengde) {
$tekst = "start " . $tekst; // vi sætter "start " foran for at kunne kende starten, selvom teksten måske starter med en link

preg_match_all("/<A HREF=(['\"])(.*?)\\1>/is", $tekst, $matches); // finder links og smider dem i arrayet $matches
$links = $matches[0]; //arrayet $matches[0] indeholder hele links

if (is_array($links)){
$antal = count($links);
    for ($i=0;$i<$antal;$i++){
    $splittekst = split($links[$i], $tekst);
    $link_start = strlen($splittekst[0])-6; // vi regner længden ud før linken, og vi trækker 6 tegn fra for "start " som vi indsatte først i teksten
    $link_str = strlen($links[$i]);
    $gl_akkumuleret_link_str = $akkumuleret_link_str; // vi måler længden af tidligere links i teksten og lægger det til den ønskede længde
    $akkumuleret_link_str = $akkumuleret_link_str+$link_str;
    $link_slut = $link_start+$link_str;

        if ($laengde > ($link_start-1) && $laengde < ($link_slut+1)){
        $laengde = $link_slut;  // vi trækker 6 tegn fra for "start " som vi indsatte først i teksten
        }
    }
}
return $laengde;
}

function afkort_langtekst($tekst, $laengde) {
// Vi afkorter teksten hvis den er lang, og sætter "..." bagefter.
    $tekst = lav_aeoeaa($tekst); // laver specialtegn om til æøå
    $laengde = afkort_leangde($tekst, $laengde); // vi checker at vi ikke bryder ind i nogle links

    if (strlen($tekst) > $laengde) {
    $tekst = substr($tekst, 0, strpos($tekst, " ", $laengde)); // afkort ved første mellemrum efter
    $tekst = $tekst . "...";
    }
return $tekst;
}

det er nok at kalde den nederste funktion med
$tekst = "din lange tekst der evt. indeholder både links og specialtegn";
$laengde = 200;
afkort_langtekst($tekst, $laengde);
Avatar billede tbsandau Novice
31. oktober 2004 - 12:39 #9
fojensen, tak for din hjælp. men kan ikke rigtig se nogen sammenhæng i det php crap du har skrevet... Bruger bare den anden funktion. Der kommer nemlig ikke til at være links midt i det hele!
Avatar billede fojensen Nybegynder
31. oktober 2004 - 17:01 #10
fint med mig...
Hvis du selv er herre over om teksterne indeholder links eller specialtegn, så kan du roligt bruge de svar, som du jo også har accepteret.

mvh. Folmer
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