Ralf: Splitting-Problem

Guten Tag liebe Forumer.

Ich wäre sehr dankbar, wenn mir jemand erklären könnte, was folgende Splitting-Funktion bewirkt:

$value =~ s/<([^>]|\n)*>//g;

Ich würde außerdem gern wissen, wie ich diesen Befehl abwandeln muss, damit HTML-Code nicht bearbeitet wird.

Grüße,
Ralf

  1. Hallo,

    Ich wäre sehr dankbar, wenn mir jemand erklären könnte, was folgende Splitting-Funktion bewirkt:

    $value =~ s/<([^>]|\n)*>//g;

    Erstens ist das keine Splitting-Funktion sondern eine Substitutions-Operation. Und sie bewirkt, daß alles, was irgendwie zwischen zwei Spitzenklammern steht, inklusive der Klammern, entfernt wird. Warum wird das wohl gemacht?

    Ich würde außerdem gern wissen, wie ich diesen Befehl abwandeln muss, damit HTML-Code nicht bearbeitet wird.

    In dem Du einfach am beginn der Zeile ein # einfügst;-)

    Grüße
      Klaus

    PS.:
    Lesen bildet:
    http://www.perldoc.com/perl5.6.1/pod/perlretut.html
    http://www.perldoc.com/perl5.6.1/pod/perlre.html

    1. Hallo Klaus.

      In dem Du einfach am beginn der Zeile ein # einfügst;-)

      Dann werden leider auch Zeilenumbrüche im Formularfeld ignoriert und der gesamte Inhalt in eine Zeile geschrieben.

      Wenn ich also eingebe:
      Text
      Noch mehr Text
      usw

      Dann wird es so gespeichert:
      TextNoch mehr Textusw

      Wie kann ich dieses Problem beheben?

      Danke schonmal für deine Hilfe,
      Ralf

      1. Hallo,

        In dem Du einfach am beginn der Zeile ein # einfügst;-)

        Dann werden leider auch Zeilenumbrüche im Formularfeld ignoriert und der gesamte Inhalt in eine Zeile geschrieben.

        Irgendwie kann ich das so nicht nachvollziehen. Wie kann es sein, daß mit ser Substitutionsoperation mehr übrig bleibt, also ohne ihr?
        Kannst Du eventuell etwas mehr Code posten. Relevant sind alle Anweisungen, die den Text in $value verändern (können). Aber poste bitte nicht das ganze Script.

        Grüße
          Klaus

        1. Hallo Klaus,
          erstmal danke, dass du dir überhaupt die Zeit nimmst!!!

          Irgendwie kann ich das so nicht nachvollziehen. Wie kann es sein, daß mit ser Substitutionsoperation mehr übrig bleibt, also ohne ihr?
          Kannst Du eventuell etwas mehr Code posten. Relevant sind alle Anweisungen, die den Text in $value verändern (können). Aber poste bitte nicht das ganze Script.

          Hier ist der relevante Teil:

          read(STDIN, $input, $ENV{'CONTENT_LENGTH'});
          @pairs = split(/&/, $input);
          foreach $pair (@pairs)
          {
          ($name, $value) = split(/=/, $pair);
          $name =~ tr/+/ /;
          $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
          $value =~ tr/+/ /;
          $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
          $value =~ s/<([^>]|\n)*>//g;
          $FORM{$name} = $value;
          }

          Danke!

          Ralf