rezix: Text trennen zu 90%!!!

Hallo durch einen Tipp von einem User bin ich praktisch zu 90% fertig... Der Code macht eigentlich das: HTML Tags (<>) ignorieren und nur effektive Zeichen zählen und bei 46 Trennen...

Beispiel:
Ich tippe einen Text ein der über 46 Zeichen hat, danach trennt er mir das vollkommen.. jedoch kann er User zurück und den Text ändern.. wenn er den Text dann wieder anschauen möchte hat er noch die Trennung von vorher gespeichert und dann macht er dies nochmals drüber.. also summieren sich die <br>.. wie kann ihm sagen das wenn schonmal getrennt ist soll er kein <br> mehr machen??

Mein Code:
function textWrap($text, $size = 46)
{
$new_text = '';
$text_1 = explode('>',$text);
$sizeof = sizeof($text_1);

for ($i=0; $i<$sizeof; ++$i)
{
$text_2 = explode('<',$text_1[$i]);
if (!empty($text_2[0]))
{
$new_text .= preg_replace('#([^\n\r .]{'. $size .'})#i', '\1<br>', $text_2[0]);
}
if (!empty($text_2[1]))
{
$new_text .= '<' . $text_2[1] . '>';
}
}
return $new_text;
}
$text = textWrap($text);

  1. Hi,

    Ich tippe einen Text ein der über 46 Zeichen hat, danach trennt er mir das vollkommen.. jedoch kann er User zurück und den Text ändern..

    er darf nicht den bearbeiteten Text trennen, sondern nur sein Original. Deine Trennfunktion darf ausschließlich (und exakt) dann verwendet werden, wenn die Nutzung eine Trennung erfordert - also insbesondere bei einer Ausgabe in den HTML-Code. Niemals sonst ist es sinnvoll, die Funktion aufzurufen.

    wie kann ihm sagen das wenn schonmal getrennt ist soll er kein <br> mehr machen??

    Dieser Fall darf nie auftreten.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. er darf nicht den bearbeiteten Text trennen, sondern nur sein Original. Deine Trennfunktion darf ausschließlich (und exakt) dann verwendet werden, wenn die Nutzung eine Trennung erfordert - also insbesondere bei einer Ausgabe in den HTML-Code. Niemals sonst ist es sinnvoll, die Funktion aufzurufen.

      Der Text wird per TinyMCE Editor eingetippt... und bei Klick auf "weiter" sieht er ihn in einer Vorschau...
      Falls er dann zurück geht und ihn ändert und wieder die Vorschau auswählt ruft er die textWrap() wieder auf und setzt mir an 46Zeichen wieder ein <br> das soll ja nur 1x vorkommen...hmmm

      der TinyMCE gibt ja auch <br> aus..

    2. er darf nicht den bearbeiteten Text trennen, sondern nur sein Original. Deine Trennfunktion darf ausschließlich (und exakt) dann verwendet werden, wenn die Nutzung eine Trennung erfordert - also insbesondere bei einer Ausgabe in den HTML-Code. Niemals sonst ist es sinnvoll, die Funktion aufzurufen.

      er nimmt ja eigentlich immer das Aktuelle...

      User tippt... - Text wird abgeschnitten - User kehrt zurück(und sieht den abgeschnittenen Text im Editor) - User änder paar sachen - Text wird weider bei 46 zeichen abgeschnitten und hat 2x <br>

      1. Yerf!

        User kehrt zurück(und sieht den abgeschnittenen Text im Editor)

        Genau das ist der Fehler. Im Editor muss wieder der Orignaltext stehen.

        Gruß,

        Harlequin

        --
        <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
  2. Hi,

    naja, als einfache Loesung ...

    [...]
    function textWrap($text, $size = 46)
    {
    // ist bereits ein '<br>' vorhanden, Text unveraendert zurueck geben
    if(strpos($text, '<br>') !== FALSE)
      return $text;
    $new_text = '';
    [...]

    Das Funktioniert nur, wenn wirklich nur <br> durch textWrap eingefuegt werden.

    Aus deiner Beschreibung werd ich nicht 100% schlau, wo der User hinklickt, und wo der Text steht ... daher is meine Antwort wohl auch nicht 100% schlau ...