mit Replace nur nach </p> einen Zeilenumbruch


EuroCent

Klappstuhl 2.0
Guten Morgen zusammen,

ich versuche bereits seit mehreren Tagen dass mein HTML Konstrukt mittels Replace zu umzugestalten dass daraus lesbarer Text wird.

Ich habe Text-Module in denen auch Checkboxen sind.

Beispiel:
HTML:
<p><label class="checkbox-label"><input id="slave-1" data-id="1" class="" type="checkbox" checked="checked">- XXX</label><br>
<label class="checkbox-label"><input id="slave-2" data-id="2" class="" type="checkbox" checked="checked">- XXX</label><br>
<label class="checkbox-label"><input id="slave-3" data-id="3" class="" type="checkbox" value="on">- XXX</label><br>
<label class="checkbox-label"><input id="slave-4" data-id="4" class="" type="checkbox" value="on">- XXX</label></p>

Daraus soll am Ende das werden:
HTML:
<p>
- XXX
- XXX
- XXX
- XXX
</p>

Jedoch wird aktuell dass daraus:
HTML:
<p>
- XXX
- XXX
- XXX
- XXX

</p>

Hier mal meine JS Funktion damit aus dem HTML-Code ein Lesbarer Text wird:
Javascript:
function CleanTXT(value) {

    if (value.substring(value.length - 4, value.length).toUpperCase() == '</P>') {
        value = value.substr(0, value.length - 4);
    }

    value = value.replace(/(    )|(\n)/gi, "");
    value = value.replace(/(<ul.*?>)/gi, "<p>");
    value = value.replace(/(<\/ul>)/gi, "</p>");

    value = value.replace(/(\n)/gi, "");
    value = value.replace(/(<button.*?>)|(<\/button>)|(<\/img>)|(<img.*?>)|(<a.*?>)|(<\/a>)|(<mark.*?>)|(<\/mark>)|(<span.*?>)|(<\/span>)|(<label.*?>)|(<\/label>)/gi, '');

    value = value.replace(/(&nbsp;)|(&nbsp;&nbsp;)|(  )/gi, " ");
    value = value.replace(/&lt;:avayaelement.*?&gt;/ig, "");
    value = value.replace(/&gt;/ig, ">");
    value = value.replace(/&#39;/ig, "'");
    value = value.replace(/&acute;/ig, "´");
    value = value.replace(/&rsquo;/ig, "'");
    value = value.replace(/&quot;/ig, '"');
    value = value.replace(/&ldquo;/ig, '"');
    value = value.replace(/&bdquo;/ig, '"');
    value = value.replace(/&rdquo;/ig, '"');
    value = value.replace(/&#8222;/ig, '"');
    value = value.replace(/\u201E/ig, '"');
    value = value.replace(/\u201C/ig, '"');
    value = value.replace(/\u201D/ig, '"');
    value = value.replace(/\u201F/ig, '"');
    value = value.replace(/„/ig, '"');
    value = value.replace(/“/ig, '"');
    value = value.replace(/(amp;)/gi, "");
    value = value.replace(/(<p><\/p>)|(<P><\/P>)|(<P> <\/P>)|(\n<P> <\/P>)|(<p> <\/p>)/gi, "");
    value = value.replace(/<\/br><\/P>/gi, "\r\n\n");

    value = value.replace(/(<li><\/li>)/gi, "");
    value = value.replace(/(<\/li><\/p>)/gi, "<\/p>");

    value = value.replace(/(<li>)/gi, "");
    value = value.replace(/(<\/li>)/gi, "\n");

    value = value.replace(/(<\/p>)|(<\/P>)/gi, "\r\n\n");

    value = value.replace(/(<br><br><br><br><br><br><br><br><br><br><br>)/gi, "<br>");
    value = value.replace(/(<br><br><br><br><br><br><br><br><br><br>)/gi, "<br>");
    value = value.replace(/(<br><br><br><br><br><br><br><br><br>)/gi, "<br>");
    value = value.replace(/(<br><br><br><br><br><br><br><br>)/gi, "<br>");
    value = value.replace(/(<br><br><br><br><br><br><br>)/gi, "<br>");
    value = value.replace(/(<br><br><br><br><br><br>)/gi, "<br>");
    value = value.replace(/(<br><br><br><br><br>)/gi, "<br>");
    value = value.replace(/(<br><br><br><br>)/gi, "<br>");
    value = value.replace(/(<br><br><br>)/gi, "<br>");
    value = value.replace(/(<br><br>)/gi, "<br>");
    value = value.replace(/(<br>)/gi, "\n");

    value = value.replace(/(<p>)|(<P>)|(<br \/>)/gi, "");
    value = value.replace(/(<p>)|(<P>)/gi, "");

    value = value.replace(/<:avayaelement.*?>/ig, "");
    value = value.replace(/\n\n\n/gi, "\r\n");

    return value;
}

Weiß hier jemand einen Rat? :(

Wichtig dabei ist folgendes noch zu beachten:
Wenn man mehrere Module wählt ergibt es dann einen Vollständigen Satz.

Beispielsweise soll aus:
HTML:
<p>Test</p>

<p><label class="checkbox-label"><input id="slave-2" data-id="2" class="" type="checkbox" checked="checked">- XXX</label><br>
<label class="checkbox-label"><input id="slave-3" data-id="3" class="" type="checkbox" checked="checked">- XXX</label><br>
<label class="checkbox-label"><input id="slave-4" data-id="4" class="" type="checkbox">- XXX</label><br>
<label class="checkbox-label"><input id="slave-5" data-id="5" class="" type="checkbox">- XXX</label><br>

<p>Vielen Dank.</p>

Daraus soll dann werden:
HTML:
Test

- XXX
- XXX

Vielen Dank.

Hoffe man weiß was Ich möchte. :)
 

Sempervivum

Erfahrenes Mitglied
Das dürfte auch viel einfacher gehen, siehe hier:

Die beiden Ergebnisse, die Du oben gepostet hast, unterscheiden sich nur durch eine Leerzeile. Ist das das einzige Problem?