Hallo,
ich stehe vor folgendem Problem.
Und zwar will ich nach 150 Buchtaben am letzten Leerzeichen den Text abschneiden. Dies mache ich so:
PHP-Code:
$text = "Hallo das ist ein Text der mehr als 150 Zeichen enthalten soll. Darum muss ich einwenig was schreiben damit der Text auch mehr als 150 Zeichen hat. So nun sind wir bei 181 Zeichen.";
if (strlen($text) >= '150') {
$text = substr($text, 0, 150);
$pos = strripos($text, ' ');
$text = substr($text, 0, $pos);
}
echo '<div>'.$text.'</div>';
Das klappt auch wunderbar und wird auch bei "...150 Zeichen hat." ab geschnitten.
Wenn ich jetzt allerdings HTML im Text mit drin habe, zerupft es mir meine ganze Seite. Beispiel:
PHP-Code:
$text = 'Hallo das ist ein Text der mehr als 150 Zeichen enthalten soll. <div><a href="http://link" >Darum muss ich einwenig was schreiben damit der Text auch mehr als 150 Zeichen hat. </a>So nun sind wir bei 181 Zeichen.</div>';
if (strlen($text) >= '150') {
$text = substr($text, 0, 150);
$pos = strripos($text, ' ');
$text = substr($text, 0, $pos);
}
echo '<div>'.$text.'</div>';
im HTML würde es jetzt so aussehen:
Code:
<div>
Hallo das ist ein Text der mehr als 150 Zeichen enthalten soll. <div><a href="http://link" >Darum muss ich einwenig was schreiben damit der Text</div>
Wie man sieht, alles nach "...damit der Text" wurde abgeschnitten somit auch das ganze HTML. Der div-Kontainer und der a-Tag wurde nicht geschlossen.
Jetzt meine Frage. Wie kann ich es am besten lösen. Die einfachst lösung wäre sicherlich das komplette HTML mit Hilfe von strip_tags() zu entfernen.
Aber wenn sich zum Beispiel eine Tabelle im Text befindet wäre es nicht so toll.
Gibt es irgendwie eine Möglichkeit das ich
prüfen kann ob das genze HTML geschlossen wurde und erst nachdem alles geschlossenen wurde abgeschnitten wird?
Gruß Nordin