Jeg har en side med nyheder hentet fra en mySQL database. Det skal først siges, at nogle af disse nyheder godt kan indeholde html-koder.
Da længden af nyhederne kan variere meget, ønsker jeg at beskrære dem, så de får en nogenlunde ens længde. Dette ville jeg umiddelbart gøre ved at tælle antal ord i posten, men dog også begrænse antal linier, hvis det skulle være en post med mange liniebrud. Jeg finder antal ord og liner sådan: function linier($streng){ $linier=explode("\n", $streng); $antallinier=count($linier); $ord = explode(" ", $streng); $antalord = count($ord); $t = "ORD: $antalord LINIER: $antallinier"; return $t; }
Mit problem er når jeg skal beskære en post. Hvordan sikrer jeg mig, at jeg ikke beskærer midt imellem f.eks. <b> og </b> ... var det tilfældet, ville resten af siden jo blive fed.
...jeg kunne selvfølgelig give mig til at tælle antallet af starttags versus antallet af slutags, men synes det er en noget ufuldstændig/besværlig løsning.
Hvis den anden løsning skal laves, ville det være godt at vide hvilke tags teksten eventuelt kan indeholde. Denne funktion klarer det nogenlunde:
function cut_text($str, $length) { $str = substr($str, 0, $length); // tager de første 300 tegn return preg_replace("/<[^\/]*?>[^<>]*$/", "", $str); // checker om der er et uafsluttet tag i slutningen // og fjerner det og efterfølgende tekst hvis det findes }
Synes godt om
Ny brugerNybegynder
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.