Enrico: Scripting aus Text filtern

Hallo,

Sodalla, wieder eine Frage, die mich beschäftigt:

Ich filtere mit folgendem Script Javascript und PHP-Code aus einem übergebenen Inhalt:

function Scripting_filtern ($Inhalt)
{
  $Dummy = strtoupper ($Inhalt);

while (is_integer ($Anfang = strpos ($Dummy, "JAVASCRIPT:")) && $Anfang >= 0)
  {
    $Inhalt = substr_replace ($Inhalt, "", $Anfang, 11);
    $Dummy = strtoupper ($Inhalt);
  }

while (is_integer ($Anfang = strpos ($Dummy, "TEXT/JAVASCRIPT")) && $Anfang >= 0)
  {
    $Inhalt = substr_replace ($Inhalt, "", $Anfang, 15);
    $Dummy = strtoupper ($Inhalt);
  }

while (is_integer ($Anfang = strpos ($Dummy, "APPLICATION/X-JAVASCRIPT")) && $Anfang >= 0)
  {
    $Inhalt = substr_replace ($Inhalt, "", $Anfang, 24);
    $Dummy = strtoupper ($Inhalt);
  }

$Ende = 0;

while ((is_integer ($Anfang = strpos($Dummy, "<?")) && $Anfang >= 0) && (is_integer ($Ende = strpos($Dummy, "?>")) && $Ende >= 0))
  {
    $Inhalt = substr_replace ($Inhalt, "", $Anfang, $Ende - $Anfang);
    $Dummy = strtoupper ($Inhalt);
  }

while ((is_integer ($Anfang = strpos($Dummy, "<%")) && $Anfang >= 0) && (is_integer ($Ende = strpos($Dummy, "%>")) && $Ende >= 0))
  {
    $Inhalt = substr_replace ($Inhalt, "", $Anfang, $Ende - $Anfang);
    $Dummy = strtoupper ($Inhalt);
  }
}

Mein Problem ist nun aber, wie ich den in Grossbuchstaben umewandelten Inhalt wieder in seine ursprüngliche Form bringe.

Wie könnte ich das am besten anstellen ?

Vielen Dank im voraus.

Gruss, Enrico

  1. Hallo Enrico

    Mein Problem ist nun aber, wie ich den in Grossbuchstaben umewandelten Inhalt wieder in seine ursprüngliche Form bringe.

    Wie könnte ich das am besten anstellen ?

    Tja, wenn Du bereits PHP5 benutzt könntest Du stripos() benutzen.

    Du könntest aber auch einfach mit zwei Strings arbeiten.
    Der eine enthält das Original und der andere die in Versalien "ge-uppercase-te" Kopie.

    Dann suchst Du in der Versalien-Version, "schneidest" aber in beiden
    Strings.
    Btw. einmal strtoupper() am Anfang reicht.

    Und nicht die Script-Tag Variante für PHP vergessen.

    PHP-Code lässt sich auch schön und einfach mit dem Tokenizer http://de.php.net/manual/en/ref.tokenizer.php ausfiltern.

    Bei Javascript wird das schwieriger, da es da ja unzählige (falsche aber funktionierende) Varianten gibt.

    Viele Grüße

    Stefan

    1. Moin,
      Warum einfach wenns auch kompliziert geht?
      Oder was spricht gegen strip_tags ()?
      TomIRL

      1. Hallo Tom,

        Oder was spricht gegen strip_tags ()?

        ich würde meinen, daß Enrico ein Problem mit Groß- und Kleinschreibung der Eingabe hat und nicht mit enthaltenen HTML-Elementen.

        Gruß aus Berlin!
        eddi

        1. Hallo Tom,

          Oder was spricht gegen strip_tags ()?

          ich würde meinen, daß Enrico ein Problem mit Groß- und Kleinschreibung der Eingabe hat und nicht mit enthaltenen HTML-Elementen.

          naja ganz so wie Du schreibst ist es ja nicht....
          Ich glaube, dass er recht umständlich ein Problem zu lösen versucht welches bereits gelöst ist. :-)
          So lange er keine Antworten gibt, bleibt uns aber nur die Vermutung. Möglicherweise hast Du ja recht.

          Viele Grüße aus Lichtenberg in den Prenzl`bg.
          TomIRL

          1. Hallo Tom,
            Hallo Stefan,
            Hallo eddi,

            mein Problem ist, dass ich, um den Text leichter durchsuchen zu können, in Grossbuchstaben umwandle.

            Ich wandle den Text in Grossbuchstaben um, lass die Filterung drüberlaufen und dann müsste ich wieder den ursprünglichen Zustand mit Gross- und Kleinschreibung herstellen.

            Und da hakt es.

            Ich könnte da allerdings auch mit RegExp ansetzen und Gross- und Kleinschreibung ignorieren...

            Was würdet Ihr davon halten ?

            Enrico

            1. Hallo Enrico,

              Ich könnte da allerdings auch mit RegExp ansetzen und Gross- und Kleinschreibung ignorieren...

              Was würdet Ihr davon halten ?

              das wiederum halte ich für Geschmackssache. Selbst habe ich noch nie einen regulären Ausdruck in PHP gebraucht, andere würden meine dafür eingesetzten Lösungen als bescheiden belächen... Für das ansich gestellte Problem der Groß- und Kleinschreibung (ich selbst würde diese auch ignorieren) hat die Stefan einen guten Ansatz gegeben:

              $a="Sring";
                 $b=strtolower($a);
                 pruefe($b);
                 arbeite_weiter_mit($a);

              Gruß aus Berlin!
              eddi

              1. Hallo eddi,

                Dein Ansatz ist nicht übel, werde mal schaun, wie ich ihn verwenden kann.

                Danke für den Denkanstoss.

                Enrico

    2. Hallo Stefan,

      welche anderen, fehlerhaften, aber funktionierenden Möglichkeiten gibt es denn noch, Javascript einzusetzen ?

      Enrico