Vraag & Antwoord

Webprogrammeren & scripting

[PHP] HTML afbreken, zonder onafgesloten tags

Ik maak een blogje, en op de eerste pagina wil ik van alle geplaatste berichten bijvoorbeeld de eerste 1000 karakters laten zien. Omdat ik geen halve woorden wil, kijk ik vervolgens naar de laatste spatie, en knip tot aan daar: [code:1:9f6150e6b9]function choptext($string, $length = 1000) { if (strlen($string) > $length) { $newstring = substr($string, 0, $length); $newstring = substr($newstring, 0, strrpos($newstring, " ")); $newstring = $newstring . "... [meer]"; } else { $newsting = $string; } return $newstring; }[/code:1:9f6150e6b9] Dit werkt, maar het probleem is dat er HTML code in het bericht kan staan. Het zou dus toevallig kunnen gebeuren dat een link doormidden wordt geknipt, en alles wat eronder komt te staan ook ineens een link wordt, omdat die niet netjes meer wordt afgesloten. Zoiets: [code:1:9f6150e6b9]En je kunt de rest lezen op <a href="http://www.google.nl">goog... [meer][/code:1:9f6150e6b9] Hoe zorg ik er voor dat ik niet ergens tussen twee bij elkaar horende tags knip (zoals <a href> en </a> of <b> en </b>), of hoe kan ik eventueel onafgesloten tags afsluiten? Ik zit er maar over te denken om gewoon alle HTML tags eruit te halen, maar het zou netter en mooier zijn om het probleem goed op te lossen... (Ik vind overigens dat bij het tellen van de karakters de HTML code sowieso niet moet worden meegeteld - wat nu wel het geval is - maar dat kan ik nog wel oplossen met een regulier expressie, dus laat dat maar even voor wat het is...)