Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit regul�rem Ausdruck

Einklappen

Neue Werbung 2019

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

  • Problem mit regul�rem Ausdruck

    Hallo zusammen,

    ich habe ein Problem mit einem regul�ren Ausdruck.

    und zwar m�chte ich in einem Text, der zuvor mit htmlentities bearbeitet wurde einige TAGs wieder erlauben, aber irgendwie haut das nicht hin, und ich komm einfach nicht auf die z�ndende Idee.

    Mein Problem ist, das sowohl Konstrukte wie
    Code:
    <table style="border: solid 1px;">
    als auch
    Code:
    <table>
    erkannt werden sollen.
    Bisheriges:
    Code:
    <?php
    $text = '&lt;table style="border: solid 1px;"&gt;&lt;tr&gt;&lt;td&gt;test&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;';
    $pattern = '#(&lt;)([\/]?(table|tr|td)(\s.*)?)(&gt;)#is';
    echo preg_replace($pattern, "<\\2>",$text)."\n\n";
    $pattern = '#(&lt;)([\/]?(table|tr|td))(&gt;)#is';
    echo preg_replace($pattern, "<\\2>",$text)."\n\n";
    ?>
    Das führt zu folgender Ausgabe:
    Code:
    <table style="border: solid 1px;"&gt;&lt;tr&gt;&lt;td&gt;test&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table>
    
    &lt;table style="border: solid 1px;"&gt;<tr><td>test&lt;br /&gt;</td></tr></table>
    All meine Versuche, das ganze zu kombinieren verliefen erfolglos, zumal beim ersten replace zudem leider das letzte &gt; erkannt wird, und nicht das folgende.

    Und so sollte es aussehen:

    Wäre toll, wenn mir jemand helfen könnte.
    Code:
    <table style="border: solid 1px;"><tr><td>test&lt;br /&gt;</td></tr></table>
    Schönen Gruß
    Sebastian

    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie braucht.


  • #2
    hmmmmm, vieleicht ?

    PHP-Code:
    <?php
    error_reporting
    (E_ALL);

    $text '&lt;table style="border: solid 1px;"&gt;&lt;tr&gt;&lt;td&gt;test&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;';

    $suchen = array('~&lt;~i''~&gt;~i');
    $ersatz = array('<''>');

    echo 
    preg_replace$suchen$ersatz$text);

    ?>
    EDIT:

    Achso, sollen ja nur bestimmte sein ...

    Kommentar


    • #3
      Wenn ich dich richtig verstehe, bräuchtest du sowas:
      PHP-Code:
      <?php
          $regex 
      '|&lt;table.*?&gt;|i';
      ?>

      Kommentar


      • #4
        Jep, das ist das Problem, sonst müßte ich vorher ja auch kein htmlentities drüber jagen
        Schönen Gruß
        Sebastian

        Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie braucht.

        Kommentar


        • #5
          xabbuh, damit ersetzt er aber auch den br-Tag
          Schönen Gruß
          Sebastian

          Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie braucht.

          Kommentar


          • #6
            oh sry mein fehler, ich hatte zum testen grad noch ein b-tag als erlaubt drin, deshalb hat er das br auch umgewandelt. Ohne dem b-Tag passts.

            Was mich zum n�chsten Problem bringt, wie bekomme ich jetzt ein Whitespace dazwischen?
            also quasi wenn vor &gt; noch text kommt, so mu� diese ein f�hrendes \s haben.

            <<<Edit>>>
            Habs rausbekommen, danke.
            PHP-Code:
            <?php
            $text 
            '&lt;table style="border: solid 1px;"&gt;&lt;tr&gt;&lt;td&gt;test&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;';
            $pattern '#(&lt;)([\/]?(b|table|tr|td)(\s.*?|))(&gt;)#is';
            echo 
            preg_replace($pattern"<\\2>",$text)."\n\n";
            ?>
            Schönen Gruß
            Sebastian

            Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie braucht.

            Kommentar

            Lädt...
            X