Ankündigung

Einklappen
Keine Ankündigung bisher.

strip_tag() - bestimmte html befehle trotzdem zulassen

Einklappen

Neue Werbung 2019

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

  • strip_tag() - bestimmte html befehle trotzdem zulassen

    Hi Folks,
    ich hab da mal wieder ein kleines problem.

    Ich habe folgendes geproggt - ganz simpel

    Code:
    strip_tags($var)
    Nun mochte ich aber, dass er den html befehl
    (zum beispiel) trotzdem zulässt. wie funzt das?


  • #2
    nicht mit strip tags !

    strip tags entfernt alle HTML tags !

    Kommentar


    • #3
      Das ist ganz einfach, nämlich so:

      Code:
      strip_tags($var, "
      ");
      Greetz

      Kommentar


      • #4
        oh ja !
        geht doch !

        strip_tags
        (PHP 3>= 3.0.8, PHP 4 )

        strip_tags -- Entfernt HTML- und PHP-Tags aus einem String
        Beschreibung:
        string strip_tags ( string str [, string allowable_tags])


        Diese Funktion versucht, alle HTML- und PHP-Tags aus str zu entfernen. Bei unvollständigen oder sinnlosen Tags werden Fehler ausgegeben.

        Kommentar


        • #5
          ich habe in etwa das gleiche Problem denn ich hab bereits eine funktion die einem die wahl lässt ob im text nur standard (<a>, [b]<u>[i]), alles oder gar kein html erlaubt ist.

          mein problem ist, ich habe da auch noch einen bbcode tag [php] mit dabei und wenn ich nun einen kommentar schreibe wird alls gefilter und nicht mehr angezeigt was innerhalb des bbcode tag steht.

          frage also..wie muss ich bei der wahlmöglichkeit "standard" noch den tag für phpcode "<?php" mit einbinden um zu verhindern das er gefiltert wird?

          Ich hatte es schon mit "<?" und "<?php" versucht aber leider ohne gewünschten effekt. Erfolge hatte ich nur wenn die komplette Checkfunktion nach HTML deaktiviert ist (was zwecks sicherheit net so optimal ist :wink: )

          Thx für Denkanstösse

          Kommentar


          • #6
            *nachobenschieb*

            Kommentar


            • #7
              Zitat von djknuffel
              mein problem ist, ich habe da auch noch einen bbcode tag [php] mit dabei und wenn ich nun einen kommentar schreibe wird alls gefilter und nicht mehr angezeigt was innerhalb des bbcode tag steht.
              Du mußt erst den Text zwischen den PHP UBB Tags in eine Variable retten und im Original durch eine leicht findbare Marke(n) ersetzen. Dann läßt Du strip_tags() filtern und ersetzt die Marke(n) mit dem "syntax-ge-highlighteten" PHP Quelltext.

              Kommentar


              • #8
                hmm..kling zwar im ersten moment etwas komisch, aber ich werd es mal versuchen

                Kommentar


                • #9
                  Zitat von djknuffel
                  hmm..kling zwar im ersten moment etwas komisch, aber ich werd es mal versuchen
                  Ich habe nur in kurzen Worten den Teil einer UBB Klasse beschrieben.

                  Du mußt ebenfalls noch beachten, daß [ code ] meist mit <pre> </pre> formatiert wird. Wenn danach dann nl2br() eingesetzt wird, sieht das Ergebnis im Browser beschissen aus, weil
                  \n zwei Zeilenumbrüche erzeugt.

                  Kommentar


                  • #10
                    und genau das nl2br hab ich entfernt..damit ich es ohne probs angezeigt bekomme *g*

                    ich poste nachher wenn ich daheim bin den gesamten code der funktion die ich da verwende..um es etwas besser zu erläutern

                    achja..in action kann man derweil des ganze hier sehen:
                    KLICK

                    wie man dort sieht..wird das nl2br nicht angewendet weswegen der text ein wenig blöde aussieht*hihi*

                    Kommentar


                    • #11
                      so..hier die funktion die ich für den bbcode tag "[php]" verwende:

                      Code:
                          // Header und Footer beschreiben, wie...
                          // der farbige PHP-Code umschlossen wird
                         $header_php = "
                      ";
                         $header_php .="
                         <table width=\"95%\" align=\"center\" cellpadding=\"0\"><tr>
                         <td class=\"schrift8\">code:</td></tr></table>";
                         $header_php .="
                         <table width=\"95%\" align=\"center\" cellpadding=\"3\">";
                         $header_php .="<tr>";
                         $header_php .="<td class=\"zitat8\">";
                      
                         $footer_php = "</td>";
                         $footer_php .="</tr>";
                         $footer_php .="</table>";
                         $footer_php .="
                      ";
                      	
                         # PHP-Code-Blöcke zwischenspeichern #
                         $c = md5(time());
                         $pattern = "/\[php\](.*?)\[\/php\]/si";
                         preg_match_all ($pattern, $text, $results);
                         for($i=0;$i<count($results[1]);$i++)
                         {
                                $text = str_replace($results[1][$i], $c.$i.$c, $text);
                         }
                          # PHP-Code-Blöcke zwischenspeichern #
                      
                         # PHP-Code-Blöcke umwandeln #
                      	
                         for($i=0;$i<count($results[1]);$i++) 
                        {
                           ob_start();
                           highlight_string(trim($results[1][$i]));
                           $ht = ob_get_contents();
                           ob_end_clean();
                           $all = $header_php.$ht.$footer_php;
                           if(function_exists("str_ireplace")) 
                           {
                                $text = str_replace("
                          
                          
                          
                      
                      
                      PHP-Code:
                      ".$c.$i.$c." 
                      ",$all,$text); } else { $text = str_replace("
                      PHP-Code:
                      ".$c.$i.$c." 
                      ",$all,$text); $text = str_replace("
                      PHP-Code:
                      ".$c.$i.$c." 
                      ",$all,$text); } } # PHP-Code-Blöcke umwandeln #
                      die variable $text wird später aus der db gelesen und enthält unter anderem den "[php]" tag.
                      Wenn ich jetz mit "strip_tags" daran gehe, filtert er das ganze alles raus..ausser die standard tags die in einer anderen funktion definiert sind.
                      Frage..wie sag ich der funktion das er den Inhalt des [php] Tags nicht filtern soll

                      Kommentar


                      • #12
                        Zitat von djknuffel
                        Frage..wie sag ich der funktion das er den Inhalt des [php] Tags nicht filtern soll
                        Hatte ich doch oben beschrieben

                        "Du mußt erst den Text zwischen den PHP UBB Tags in eine Variable retten und im Original durch eine leicht findbare Marke(n) ersetzen. Dann läßt Du strip_tags() filtern und ersetzt die Marke(n) mit dem "syntax-ge-highlighteten" PHP Quelltext."

                        Kommentar


                        • #13
                          würde das "retten" funzen wenn ich bei der abfrage
                          Code:
                          if(function_exists("str_ireplace")) 
                               { 
                                    $text = str_replace("
                              
                              
                              
                          
                          
                          PHP-Code:
                          ".$c.$i.$c." 
                          ",$all,$text); } else { $text = str_replace("
                          PHP-Code:
                          ".$c.$i.$c." 
                          ",$all,$text); $text = str_replace("
                          PHP-Code:
                          ".$c.$i.$c." 
                          ",$all,$text); }
                          wo er die [php] tags ersetzt ein "return $save_text;"zurückgebe und diese variable dann nach dem durchlauf mit strip_tags() weiter verwenden?

                          Kommentar


                          • #14
                            Zitat von djknuffel
                            würde das "retten" funzen wenn ich bei der abfrage
                            Jut, ich will ja nich meckern, weil es das Anfängerforum ist. Ich habe eben nun mal eine blumige Schreibe, da ich auch eine zeitlang Zeitung gemacht und deshalb einen etwas umfangreicheren Wortschatz habe.

                            1. suche per preg_match_all nach allen [ php ] UBB Tags und sichere das Ergebnis Array.

                            2. ersetze mit preg_replace im Original alles zwischen [ php ] und [ /php ] durch eine fortlaufende Ziffer (falls es mehr als ein Scriptschnipsel ist).

                            3. jage das Original durch strip_tags

                            4. begebe Dich mit den PHP Scripten zu einer Funktion, die daraus ansehnlichen Quelltext bastelt.

                            5. ersetze mit preg_replace der Reihe nach [ php ] lfd. Nr. [ /php ] durch den eingefärbten Quelltext.

                            Noch Fragen?

                            Kommentar

                            Lädt...
                            X