Problem:
Manchmal will man einen Text HTML-formatiert ausgeben und dazu einen Text nach z.B. max. 80 Zeichen mit <br /> umbrechen. Dazu gibt es zwar auch die PHP-Funktion wordwrap, allerdings kann es bei dieser vorkommen, dass HTML-Codes (z.B. Links) von dem Trennstring durchbrochen werdenBeispiel:
$text = "Der schnelle braune Fuchs sprang über den faulen Hund."; $neuertext = wordwrap( $text, 20, "<br />" ); ergibt folgendes: Der schnelle braune <br /> Fuchs sprang über <br /> den faulen Hund.ABER:
$text = 'Das ist eine tolle Suchmaschine: <a href="http://www.google.de/ target="_blank">http://www.google.de</a>'; $neuertext = wordwrap( $text, 20, "<br />" ); ergibt folgendes: Das ist eine tolle <br /> Suchmaschine: <br /> <a <br /> href="http://www.google.de/ <br /> target="_blank>http://www.google.de</a>Dadurch wird der HTML-Code zerstört.
Lösung:
Mit folgender Funktion kann man einen Text nach $wrap_at Zeichen (Standart: 80) mit $wrap_code (Standart: "\n") umbrechen, aber nur wenn er nicht zwischen < und > steht:
function wrapText($code, $wrap_at = 80, $wrap_code = "\n") { return preg_replace('%(\s*)([^>]{'.$wrap_at.',})(<|$)%Ue', "'\\1'.wordwrap('\\2', '".$wrap_at."', '$wrap_code', 1).'\\3'", $code); }