Um die getippten / eingefügten Zeichen eines TYPO3 HTMLArea Rich-Text-Editors auszulesen, benötigen wir nur ein simples, kleines JavaScript. An die serverseitige Variante haben wir ebenfalls schon gedacht.
setTimeout(function () { var editorName = 'name_and_rte_counterid'; // z.B. meinrtefield_1 RTEarea[editorName].editor.iframe.events.htmlareaeventwordcountchange.addListener(function() { setTimeout(function() { RTECheckChars(RTEarea[editorName]); }, 20); }); RTECheckChars(RTEarea[editorName]); }, 1000); function RTECheckChars(checkRte) { var text = checkRte.editor.getHTML(); text = text.replace(HTMLArea.RE_htmlTag, ' '); text = text.replace(/ | /gi, ' '); console.log(text.length); // ---- AUSGABE ---- return false; }
Die Ausgabe im JavaScript könnt ihr natürlich dazu nutzen, um den User anzuzeigen wie viele Zeichen er bereits getippt hat, wie viele Zeichen er noch übrig hat (wenn die Zeichnanzahl begrenzt sein soll) und wie viele Zeichen er zu viel getippt hat.
Mit der PHP Variante zählen wir exakt wie die JavaScript Variante die Zeichen im RTE. Somit können wir hier nochmals vor dem Speichern serverseitig checken, ob die Zeichenanzahl korrekt ist / nicht überschritten wurde / oder was auch immer.
private function getRteChars($rte) { $checkRteText = $this->pi_RTEcssText($rte); $checkRteText = strip_tags($checkRteText); $checkRteText = str_replace(' ', ' ', $checkRteText); $checkRteText = str_replace('&', ' ', $checkRteText); $checkRteText = str_replace(' ', ' ', $checkRteText); return mb_strlen($checkRteText, "utf-8"); }
Als Parameter wird natürlich die POST-Variable des RTEs übergeben.
Falls jemand etwas in dieser Richtung gesucht hat, hoffe ich, ich konnte helfen.
Bis dahin!