Ankündigung

Einklappen
Keine Ankündigung bisher.

HTML-Code umwandeln

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • HTML-Code umwandeln

    Hi,
    ich habe ein Problem, und weiß nicht wie ich an dieses herrangehen soll.
    Mein Ziel ist das Umwandeln eines HTML-Codes in einen BBcode.

    Diesen Code möchte ich umwandeln, leider kann dieser Inhalt Variable ausfallen.

    PHP-Code:
    <span style="text-decoration: underline; font-style: italic; font-weight: bold;">test</span
    So soll es aussehen

    Code:
    test

  • #2
    Hallo,

    das wird sehr, sehr aufwändig, da der CSS-Code (wie du schon schriebst) variable ausfallen kann. Im Grunde müsstest du die verschiedenen regulären Ausdrücke sehr oft auf ein und denselben Tag anwenden.
    Einfach sind Tags wie [b], [i] etc.
    Wie wäre es aber, ein BB-Tag [span] einzuführen, in dem man CSS-Code verwenden kann (also [span style=text-decoration: underline; font-style: italic; font-weight: bold;]test[/span])? Das wäre zwar nicht die Lösung genau, die du suchst, aber es wäre eine Möglichkeit.

    Kommentar


    • #3
      Wofür brauchst du dass? Normal sollte es doch nur nötig sein von BBCode auf HTML zu wandeln, andersrum ergibt es für mich keinen Sinn!

      Kommentar


      • #4
        Ich sehe zwar den Sinn auch nicht ein. Ist zwar etwas kompliziert, aber das folgende Fragment sollte funktionieren:
        Code:
        <?php
        $text = preg_replace_callback("|<span style=['\"]*(.+)['\"]>(.+)</span>|iU", 'create_bb', $text);
        
        function create_bb($treffer){
        	$text = $treffer[2];
        	if (preg_match('/text-decoration:\s*underline/i', $treffer[1])){
        		$text = '' . $text . '';
        	}
        	if (preg_match('/font-style:\s*italic/i', $treffer[1])){
        		$text = '' . $text . '';
        	}
        	if (preg_match('/font-weight:\s*bold/i', $treffer[1])){
        		$text = '' . $text . '';
        	}
        	return($text);
        }
        ?>
        Musste Code-Tags nehmen, in PHP-Tags werden die BB-Codes verschluckt. Die scheinen schon wieder Hunger zu haben.

        Kommentar


        • #5
          [OT] Wohl wieder was für die Board Buglist

          Soviele reguläre Ausdrücke sind doch Wahnsinn. Die ganze Sache ist meines Erachtens unsinnig.

          Kommentar


          • #6
            Ich würde eher vorschlagen, alle HTML-Tags mit htmlspecialchars()/htmlentities() zu entwerten und nur die zugelassenen wiederherzustellen:
            Code:
            #&lt;\s*(/?)\s*(span|em|strong|b|i|u|div|p|ul|li)(\s+style\=".*")?\s*(/?)\s*&gt;#Uis
            Somit werden nur die wiederhergestellt, die ungefährlich sind (keine SCRIPT-Tags oder Iframes) und außer evtl. style keine Attribute haben.

            Der RegEx ist jetzt aus dem Kopf, aber ich denke, dass er funktioniert.

            Kommentar

            Lädt...
            X