Peder: strip_tags sucks

Sers!

strip_tags ist eigentlich genau was ich suche, nur blöd das es nicht so funktioniert wie es soll. Hat jemand eine Alternative?

Danke!
Peder

  1. [...] nur blöd das es nicht so funktioniert wie es soll.

    Ich bin mir _ziemlich_ sicher, dass strip_tags() wie definiert funktioniert.

    1. Ich bin mir _ziemlich_ sicher, dass strip_tags() wie definiert funktioniert.

      Irgendwie wars mir ja klar das wieder so ne behinderte Antwort kommt die mir nicht hilft. besserwisser Mentalität hier..

      Google
      Leider finde ich nur keine Alternative!

      Peder

      1. Hi,

        Irgendwie wars mir ja klar das wieder so ne behinderte Antwort kommt die mir nicht hilft. besserwisser Mentalität hier..

        wenn Dir die Antwort nicht gefällt, könnte es an der Frage liegen. Sie ist nämlich ein klarer Beleg dafür, dass es *doch* dumme Fragen gibt.

        Leider finde ich nur keine Alternative!

        Wie zur Hölle soll Dir eine Alternative genannt werden, wenn Du nur "alle doof außer Mama" sagst und nicht mal sagst, was Dir an der Funktion nicht gefällt? Sie funktioniert wie spezifiziert - wenn Du anderer Meinung bist, machst Du offenbar etwas falsch.

        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. zB

          <TABLE>  
          <TR>  
          	<TD>Test2</TD>  
          	<TD BACKGROUND="<?=$var;?>">Test4</TD>  
          	<TD>Test5</TD>  
          </TR>  
          </TABLE>
          

          Die Funktion kommt bis zu dem PHP-Code und nicht weiter!
          Also macht sie schon mal nicht das was beschrieben wird!

          Peder

          1. Die Funktion kommt bis zu dem PHP-Code und nicht weiter!

            Ich sehe keine Funktion. Lediglich eine HTML-Wurst und eine echo in potentiell nicht funktionierender Kurzschreibweise.

            Also macht sie schon mal nicht das was beschrieben wird!

            Was erwartest du von strip_tags(), wenn du die Funktion nichtmal verwendest?

            1. Ja nu - das wird nur der Code sein, den er versucht da durch zu schicken...

              aber ohne uns zu zeigen wo er das aufruft...

              1. Hello,

                Ja nu - das wird nur der Code sein, den er versucht da durch zu schicken...

                aber ohne uns zu zeigen wo er das aufruft...

                ... und vor allem, was dann wirklich rauskommt, wie betrachtet, mit welcher Codierung abgespeichert usw?

                Im Prinzip ist strip_tags() auch eine hoch überlastete Funktion. Die soll quasi den gesamten Code parsen und zerlegen und dann die ungewollten Elemente entfernen. Dazu müsste sie den Code erstmal auf sachliche (syntaktische) Richtigkeit überprüfen. Das tut sie mWn aber nicht.

                Liebe Grüße aus dem schönen Oberharz

                Tom vom Berg

                --
                Nur selber lernen macht schlau
                http://bergpost.annerschbarrich.de
                1. Hello,

                  Im Prinzip ist strip_tags() auch eine hoch überlastete Funktion. Die soll quasi den gesamten Code parsen und zerlegen und dann die ungewollten Elemente entfernen. Dazu müsste sie den Code erstmal auf sachliche (syntaktische) Richtigkeit überprüfen. Das tut sie mWn aber nicht.

                  Das steht ja auch extra dick & fett im Manual!
                  Siehe: http://de.php.net/manual/en/function.strip-tags.php#function.strip-tags.notes

                  Gruß Gunther

                2. Im Prinzip ist strip_tags() auch eine hoch überlastete Funktion. Die soll quasi den gesamten Code parsen und zerlegen und dann die ungewollten Elemente entfernen.

                  No, sie soll alle ausser die ausgenommenen Tags entfernen.
                  striptag soll normalerweise Tags entfernen. Nicht Elemente. Ich sehe nicht, was da schwierig wäre. Du brauchst nicht mal Rekursionen. Und eine Syntaxprüfung macht diese Funktion untauglich, weil Syntax ein vollkommenes Dokument verlangt. strip_tags ist kein Parser.

                  Dazu müsste sie den Code erstmal auf sachliche (syntaktische) Richtigkeit überprüfen. Das tut sie mWn aber nicht.

                  Weil sie damit schlicht unbrauchbar würde.

                  mfg Beat

                  --
                  ><o(((°>           ><o(((°>
                     <°)))o><                     ><o(((°>o
                  Der Valigator leibt diese Fische
                  1. Hello,

                    Im Prinzip ist strip_tags() auch eine hoch überlastete Funktion. Die soll quasi den gesamten Code parsen und zerlegen und dann die ungewollten Elemente entfernen.

                    No, sie soll alle ausser die ausgenommenen Tags entfernen.
                    striptag soll normalerweise Tags entfernen. Nicht Elemente. Ich sehe nicht, was da schwierig wäre. Du brauchst nicht mal Rekursionen. Und eine Syntaxprüfung macht diese Funktion untauglich, weil Syntax ein vollkommenes Dokument verlangt. strip_tags ist kein Parser.

                    Dazu müsste sie den Code erstmal auf sachliche (syntaktische) Richtigkeit überprüfen. Das tut sie mWn aber nicht.

                    Weil sie damit schlicht unbrauchbar würde.

                    das möchte ich nochmal in die Diskussion zurückgeben:

                    Ist es denn überhaupt möglich, Tags zu entfernen (und nicht Konstrukte, die so ähnlich aussehen, wie Tags), wenn man nicht den übergebenen Text vollständig parst?

                    Ich denke, hier liegt der Hase im Pfeffer :-)

                    Liebe Grüße aus dem schönen Oberharz

                    Tom vom Berg

                    --
                    Nur selber lernen macht schlau
                    http://bergpost.annerschbarrich.de
                    1. Ist es denn überhaupt möglich, Tags zu entfernen (und nicht Konstrukte, die so ähnlich aussehen, wie Tags), wenn man nicht den übergebenen Text vollständig parst?

                      Ein Tag ist ein grammatikalisches Konstrukt. Aber ein Tag erzeugt kein Element. Wenn der Parser kenntnis von Elementen haben soll, dann bracht er eine Syntaxdeklaration + ein vollständiges Dokument.

                      Bei einer Funktion kommt es darauf an, was ich erreichen will.
                      strip_tags ist zum Beipiel etwas anderes als strip_html.

                      Ich denke, hier liegt der Hase im Pfeffer :-)

                      Nö, bei mir liegt die Schweinswurst in den Bohnen.

                      mfg Beat

                      --
                      ><o(((°>           ><o(((°>
                         <°)))o><                     ><o(((°>o
                      Der Valigator leibt diese Fische
                      1. Hello,

                        Ich denke, hier liegt der Hase im Pfeffer :-)

                        Nö, bei mir liegt die Schweinswurst in den Bohnen.

                        Au fein! Ich komme vorbei. Wann ist das Essen fertig?

                        Liebe Grüße aus dem schönen Oberharz

                        Tom vom Berg

                        --
                        Nur selber lernen macht schlau
                        http://bergpost.annerschbarrich.de
                        1. Hallo Tom,

                          Ich denke, hier liegt der Hase im Pfeffer :-)

                          Nö, bei mir liegt die Schweinswurst in den Bohnen.

                          Au fein! Ich komme vorbei. Wann ist das Essen fertig?

                          Du kommst zu spät. Es ist verschlungen. Die ganze Wochenration auf einmal. Garantiert.

                          mfg
                          cygnus

                          --
                          Die Sache mit der Angel und dem  ><o(((°>  hat immer einen Haken ...
                    2. Hello,

                      Ist es denn überhaupt möglich, Tags zu entfernen (und nicht Konstrukte, die so ähnlich aussehen, wie Tags), wenn man nicht den übergebenen Text vollständig parst?

                      Ich denke, hier liegt der Hase im Pfeffer :-)

                      Nein, das ist eben nicht möglich. Die Funktion "arbeitet nur nach Schema 'F'".
                      Beispiel:

                      $text="<br><br>Wenn gilt: x <= y dann muss auch gelten: y >= x";  
                      $text_stripped = strip_tags($text);  
                      echo"$text_stripped";
                      

                      Ausgabe:
                      Wenn gilt: x = x

                      Gruß Gunther

            2. Was erwartest du von strip_tags(), wenn du die Funktion nichtmal verwendest?

              oh mann...

                
              $content =  file_get_contents("meinefile.php");  
              $content = strip_tags($content);
              

              und wenn ich mir dann das per echo ausgeben lasse, dann verhält es sich so wie in meinem letzten Post beschrieben!

          2. <TABLE>

            <TR>
            <TD>Test2</TD>
            <TD BACKGROUND="<?=$var;?>">Test4</TD>
            <TD>Test5</TD>
            </TR>
            </TABLE>

              
            Du möchtest also das dabei rauskommt:  
              
            - Leerzeile  
            - Leerzeile  
            Test2  
            Test4  
            Test5  
            - Leerzeile  
            - Leerzeile  
              
            Stattdessen kommt aber  
              
            - Leerzeile  
            - Leerzeile  
            Test2  
            ~~~html
            <?=$var;?>">Test4</TD>  
             	<TD>Test5</TD>  
            </TR>  
            </TABLE>
            

            oder etwas in der Art?

      2. Ich bin mir _ziemlich_ sicher, dass strip_tags() wie definiert funktioniert.

        Irgendwie wars mir ja klar das wieder so ne behinderte Antwort kommt die mir nicht hilft. besserwisser Mentalität hier..

        Heile den behinderten Code.
        Wenn das nicht geht, musst du deine eigene Medizin erfinden.
        Der Umgang mit kaputtem Fremdcode, den man nicht verändern kann, sollte Anlass geben:
        a) Den Autoren darauf aufmerksam zu machen, dass der Code nicht auswertbar ist.
        b) Ihn nach einer alternativen API fragen.
        c) Ihn vor allem überhaupt mal zuerst fragen, ob man das darf.

        mfg Beat

        --

        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
      3. Hi Peter,

        es gibt natuerlich im PHP-Standard die Funktion
        function_that_does_exactly_what_strip_tags_is_supposed_to_be_doing()

        Nimm einfach die :-)

        Viele Gruesse
        der Bademeister

      4. Hi,

        Irgendwie wars mir ja klar das wieder so ne behinderte Antwort kommt die mir nicht hilft. besserwisser Mentalität hier..

        Idiot.

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
  2. moinmoin,

    nur blöd das es nicht so funktioniert wie es soll

    was hätte es denn tun sollen und was hat es statt dessen für ein Ergebnis geliefert, das von der Beschreibung abweicht? Deine Fehlerbeschreibung ist.. ähm... naja... *etwas* sehr kurz um nachvollziehen zu können, was du eigendlich möchtest, bzw wo das Problem liegt/lag.

    Hat jemand eine Alternative?

    bestimmt, wenn du beschreibst wofür

    Gruß Krischi

    1. Ich wiederhole mich nur ungern, aber diese Funktion ist VOLL mit BUGS!
      Google

      Dachte ich stoße hier auf gleichgesinnte die schon mal das selbe Problem hatten, aber ne hier wird man erst mal dumm gefragt..

      Peder

      1. moinmoin

        aber ne hier wird man erst mal dumm gefragt..

        jupp... blöd fragen kann ich gut... hellsehen, was du möchtest, kann ich nicht. Da du dich konsequent weigerst, sinnvolle Informationen beizusteuern, tut es mir leid, dir nicht helfen zu können.

        Gruß Krischi

      2. Ich wiederhole mich nur ungern, aber diese Funktion ist VOLL mit BUGS!
        Google

        Wenn man die Treffer der Reihe nach durchgeht, wird man feststellen, dass diese bereits behoben sind - die meisten treffer sind aus dem Jahre Schnee (2000, 2001, 2002 ...) und beziehen sich auf irgendwelchen antiken PHP-4-Versionen

        Dachte ich stoße hier auf gleichgesinnte die schon mal das selbe Problem hatten, aber ne hier wird man erst mal dumm gefragt..

        "Because strip_tags() does not actually validate the HTML, partial, or broken tags can result in the removal of more text/data than expected."

        Was erwartest du dir, wenn du HTML mit PHP-gemischt an einen Funktion übergibst, die tendentiell HTML parsen soll?

        1. Was erwartest du dir, wenn du HTML mit PHP-gemischt an einen Funktion übergibst, die tendentiell HTML parsen soll?

          also Laut Beschreibung soll die schon HTML und PHP Tags rauswerfen...

          This function tries to return a string with all HTML and PHP tags stripped from a given str.

          Aber "tries"... ist eben "versucht"...

      3. Hi!

        Ich wiederhole mich nur ungern, aber diese Funktion ist VOLL mit BUGS!

        Bei der Verbreitung und Beliebtheit von PHP halte ich das für ein Gerücht.

        Dachte ich stoße hier auf gleichgesinnte die schon mal das selbe Problem hatten,

        Wie war das noch gleich mit dem Denken ...?
        Und bis jetzt hast du uns in deiner außerordentlich freundlichen Art immer noch nicht verständlich zum Ausdruck gebracht,

        • was du eigentlich erreichen willst
        • wie das bisher versucht hast
        • und warum du die Funktion für buggy hälst

        aber ne hier wird man erst mal dumm gefragt..

        Der Einzige, der sich hier bisher dumm anstellt, bist wohl du.
        Wenn es dir augenscheinlich schon zu lästig ist,_dein_Problem verständlich zu posten und auf Rückfragen ebenso zu antworten, warum sollten sich dann andere hier die Zeit nehmen, und sich mit deinem Problem beschäftigen?
        Wie man in den Wald hineinruft, so schallt es heraus!

        Im übrigen scheint es mir (bei flüchtiger Betrachtung) auch irgendwie nicht besonders clever, offenbar eine Datei einzulesen, die nur aus HTML- und PHP-Tags besteht, und diese dann durch strip_tags() zu jagen.

        Gruß Gunther

  3. Damit wenigstens der nächste was davon hat:

    PHP Simple HTML DOM Parser

    Damit werde ich glaube ich glücklich!

    1. Damit wenigstens der nächste was davon hat:

      Ohne zu wissen, was du eigentlich erreichen wolltest wird es jemandem der im Archiv sucht auch nicht wirklich helfen.

    2. Hello,

      Damit wenigstens der nächste was davon hat:

      PHP Simple HTML DOM Parser

      Damit werde ich glaube ich glücklich!

      Das war auch mein Gedanke, dass Du vermutlich nur den Weg über einen DOM-Parser gehen kannst, wenn auch von komplexeren Strings noch das Gewünschte übrig bleiben soll...

      Beat ist da allerdings anderer Ansicht:
      http://forum.de.selfhtml.org/my/?t=191413&m=1276459
      Das ist für mich aber noch nicht wirklich erledigt.

      Man muss da wohl erstmal eine Unterscheidung treffen:

      • es sollen alle Textteile entfernt werden, die nach Tag-Fragmenten aussehen,
          also nur alle nicht zu bemängelnden Textteile stehen bleiben
      • es sollen nur "heile" Tags entfernt werden, und zwar vollständig
      • ein Eingriff in Texte, die zwar so aussehen wie Tags, der Browser aber nicht
          als solche identifizieren würde, soll unterlassen werden
      • Ein Eingriff in Texte, die so aussehen wie PHP-Tags, soll auf jeden Fall
          stattfinden. Sie sollen entfernt (und gezählt) werden...

      So ungefähr würde ich mir eine Optionsliste vorstellen.

      Es wäre sehr schön, wenn Du Dir selber diesen Thread merkst und ihn mit Informationen fütterst, sowie Du die auf die ersten Erfolge oder konkreten Fragen gestoßen bist. Dann könnte aus PHP-Bashing doch noch konstruktive Mitarbeit werden :-)

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de