[php]html-tags entfernen und wieder zurück schreiben



  • html-tags entfernen, eine funktion drüber laufen lassen die selbst html-tags hinzufügt und am ende die tags die am anfang entfernen wurden wieder hinzufügen, aber an den richtigen positionen

    z.b.
    $code = "hallo dies <u>ist ein</u> test"

    code=ernfernetags(code = ernferne_tags(code);
    //$code == "hallo dies ist ein test"

    code=funktion_die_hallos_fett_macht(code = funktion\_die\_hallos\_fett\_macht(code);
    //$code == "<b>hallo</b> dies ist ein test"

    code=undo_entferne_tags(code = undo\_entferne\_tags(code);
    //$code == "<b>hallo</b> <u>dies ist</u> ein test"

    ich brauche das für das syntax plugin, ich könnte natürlich funktion_die_hallos_fett_macht so coden das sie <u></u>-tags ignoriert, aber das problem dabei ist das das ganze erweiterbar sein soll und ich will nicht bei jeder neuen funktion die alten funktionen updaten
    außerdem wird dann jeder kleine/triviale funktion gleich zu einer großen

    habt ihr ideen wie man das lösen kann?


  • Mod

    Ne, das gefaellt mir so nicht.
    Um das so zu realisieren, muesste man sich den Kontext merken, aus dem der Tag gefiltert wurde... Das ist wirklich keine trivial Loesung - zumal sich der Kontext ja veraendert: wenn 2 Funktionen Tags auf das selbe Wort anwenden...

    Warum ignoriert funktion_die_hallos_fett_macht nicht einfach _alle_ Tags?

    Ich stelle mir gerade vor wie das ablaufen wuerde wenn du eine Funktion zum fettmachen von 'Hallo' hast, eine zum Unterstreichen von "foo" und eine zum kursiv machen von 'bar' - willst du da jedesmal die Tags filtern?

    Was spricht dagegen, dass die Funktionen selber jeden Tag ignorieren?



  • das ignorieren aller tags ist nicht grade trivial, erst recht bei cpp_syntax_coloring welches mit regexp arbeitet.
    ich kann dir gerne einblick in den code verschaffen

    Ich stelle mir gerade vor wie das ablaufen wuerde wenn du eine Funktion zum fettmachen von 'Hallo' hast, eine zum Unterstreichen von "foo" und eine zum kursiv machen von 'bar' - willst du da jedesmal die Tags filtern?

    es werden nur funktionen aufgerufen für die code-tags gesetzt sind, außerdem arbeitet das plugin mit einen cash d.h. ich kann mir recht viel overhead leisten da es nur einmal berechnet wird und sonst aus den cash kommt



  • Wozu genau willst du die Tags denn erst entfernen - ich denke, das ist der falsche Ansatz 🙄
    btw: es sollte wohl eher cache heißen, nicht cash 🤡



  • flenders schrieb:

    Wozu genau willst du die Tags denn erst entfernen - ich denke, das ist der falsche Ansatz 🙄

    versuche mal ein cpp_syntax_coloring funktion zu machen die html tags ignoriert, es ist schon schwer genug das c++ parsen hinzu kriegen

    aber ich kucks mir mal an, vielleicht ist es doch der leichter weg



  • Du willst also quasi erreichen, dass man auch innerhal von Code-Tage (zusätzlich zum Syntax-Coloring) HTML-Tags zur Formatierung (fett, unterstrichen) verwenden kann?
    Liegt dein Problem darin, dass die Tags die Syntax-Erkennung durcheinander bringen, oder wo liegt das Problem?



  • cpp_syntax_coloring färbt z.b. auch "strings" in " ein, dann macht er aus
    <b class="kw">for<b>
    ein
    <b class="<i class="string">kw</i>">for</i>

    usw.



  • Diese Tags werden doch auch schon von der Foren-Software zusammengesetzt, oder? Dann könntest du doch z.B. dafür sorgen, dass alle " aus dem Text vor dem Syntax-Coloring in das entsprechende Entity gewandelt werden, und die Tags, die vom Script generiert werden " verwenden. Im Coloring würdest du jetzt eben anstelle von " auf &quot untersuchen.
    Falls es natürlich viele solcher Ausnahmen gibt wird dies dann aber zu kompliziert und unübersichtlich 😞 - aber was anderes fällt mir im Augenblick auch nicht ein 🤡



  • Hi.

    KA, obs noch was hilft - bin ja schliesslich noch Anfaenger in dem Gebiet 😉 : Hatte ein ganze aehnliches Problem bei der Textverarbeitung in meinem Gaestebuch.
    Ich habe das so geloest, dass auch zuerst einmal der gesammte Text durch htmlentities gejagt wird. Anschliessend habe ich dann nicht nur nach Keywords zum Parsen gesucht, sondern auch nach unmaskierten < und >, die nur aus HTML-Tags von bereits geparsten Textstuecken stammen koennen. Die Tags werden dann uebersprungen.


Anmelden zum Antworten