DanielD: Zeichen zählen

Guten Moooooorgen,

ich versuche grade die "<"-Zeichen in einem String zu zählen und will dann dementsprechend viele ">"-Zeichen ausgeben, falls welche fehlen. Denn es soll nicht möglich sein, mein FOrum zu zerstören, aber HTML soll erlaubt sein.
Kann mir da jemand weiter helfen ?

Danke, DanielD

http://www.fox-box.com

  1. Moin Daniel,

    Guten Moooooorgen,

    ich versuche grade die "<"-Zeichen in einem String zu zählen und will dann dementsprechend viele ">"-Zeichen ausgeben, falls welche fehlen. Denn es soll nicht möglich sein, mein FOrum zu zerstören, aber HTML soll erlaubt sein.

    Die Zeichen kannst Du so zaehlen:

    $anzahl= $string=~ tr/<//;

    Ob Du damit allerdings o.g. Problem loesen kannst glaube ich nicht, denn Du muesstest ja ggf. jedes einzelne Tag fuer sich schliessen, oder sehe ich das falsch ?

    Danke, DanielD

    Gruss
       Kai

    1. hi!

      Die Zeichen kannst Du so zaehlen:
      $anzahl= $string=~ tr/<//;

      Falsch, dadurch würden alle <-Zeichen gelöscht werden. Richtig wäre:
        tr/</</;

      bye, Frank!

      1. Hallo Frank,

        hi!

        Die Zeichen kannst Du so zaehlen:
        $anzahl= $string=~ tr/<//;

        Falsch, dadurch würden alle <-Zeichen gelöscht werden.

        Bitte erzaehle keine Dinge, die falsch sind !

        perl -v

        This is perl, v5.6.0 built for i686-linux

        perl -e '$_="<<<<<";print tr/<//;print ", $_\n"'

        5, <<<<<<

        s/<//g;
        wuerde loeschen !

        Richtig wäre:
          tr/</</;

        funktioniert natuerlich auch.

        bye, Frank!

        Gruss
           Kai

        1. hi!

          Bitte erzaehle keine Dinge, die falsch sind !
          tr/<//;

          Sorry, funktioniert tatsächlich. War das schon immer so? In meinem
          Buch "Programmieren mit Perl" steht zumindest zum Zählen von Zeichen
          die von mir genannte Methode drin.

          bye, Frank!

          1. Hallo Frank,

            tr/<//;
            Sorry, funktioniert tatsächlich. War das schon immer so?

            [...]

            Das ist eine "Eigenschaft" von tr//;

            Aus der Doku:

            If the REPLACEMENTLIST is empty, the SEARCHLIST is replicated. This latter is useful
            for counting characters in a class or for squashing character sequences in a class.

            Und das Beispiel:

            $cnt = tr/0-9//;  # count the digits in $_

            Gruß AlexBausW

            Please visit my SELFvisitingcard @ http://www.atomic-eggs.com/selfspezial/daten/150.html

          2. Hallo Frank,

            Sorry, funktioniert tatsächlich. War das schon immer so? In meinem
            Buch "Programmieren mit Perl" steht zumindest zum Zählen von Zeichen
            die von mir genannte Methode drin.

            Alex hat ja schon alles gesagt aber auch in perldoc perlop steht (neben dem was Alex schreibt): $cnt = $sky =~ tr/*/*/;     # count the stars in $sky, so dass man da schnell mal irregeleitet werden kann - Egal, hat sich ja geregelt : )

            bye, Frank!

            Gruss
               Kai

  2. Hi,

    Denn es soll nicht möglich sein, mein FOrum zu zerstören, aber HTML soll erlaubt sein.

    freu Dich über den ersten, der auf die glorreiche Idee kommt, "<!-- >" einzugeben.

    Ich weiß nicht, welcher Art Dein Thema sein soll; deswegen gehe ich einfach mal von einem "durchschnittlichen" Forum aus, in dem normalerweise nur Text steht. Hier ist es sinnvoll, nur einen begrenzten Etat von HTML zu erlauben, beispielsweise <b></b>, <i></i> usw.

    Es macht Sinn, speziell auf diese zu prüfen und alle anderen "<" durch "& lt;" zu ersetzen. So macht es beispielsweise http://www.wer-weiss-was.de/.

    Cheatah