$teaser = substr('<p>Dies ist <span class="farbe">der</span> Text</p>');
... weil das nicht die ersten 300 Zeichen des Texts sind und
... weil der Code dabei zerstört wird
in einer datenbank sollen texte eben medienneutral gespeichert werden - bb-code oder wikisyntax eigent sich zb dafür
Es ist herzlich wurscht, ob die zusätzlichen Zeichen ein HTML'sches <strong> sind oder ein BB'sches [wichtig]. Das Problem, dass sie nicht mitgezählt und nicht mittendrin getrennt werden dürfen, hat er in jedem Fall. Hätte er zudem auf <span> verzichtet, wäre der HTML-Code auch als medienneutral zu bezeichnen.
Statt der schon vorgeschlagenen striptags()-Methode möchte ich hier noch darauf hinweisen, dass man beim Schreiben des Artikels auch von Hand eine separate Zusammenfassung erstellen könnte. Ein, zwei kurze Sätze kosten nicht viel Zeit und bringen den Artikel besser auf den Punkt als von selbigem ein automatisiert abgehaktes Stück zu präsentieren. Prominentes Beispiel: heise.de.