Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

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...)

Buur