suchmuster in ordung??
markus
- cgi
0 Philipp Hasenfratz0 markus
0 csx
Halihallo markus
/[1]+$/
perldoc perlre
[] ist eine Menge (und per Definition ungeordnet). In deiner RegExp wird lediglich
überprüft, ob das aktuelle Element (Byte) einem aus der Menge (Character Class)
entspricht. Da es in einer Character Class keine Ordnung gibt, ist es egal, was du zuerst
und zuletzt schreibst.
Desweiteren solltest du dich darüber infomieren, welche Zeichen escaped werden müssen,
einige haben eine spezielle Bedeutung in RegExp (steht ebenfalls in perldoc perlre).
Viele Grüsse
Philipp
\w\s@äöüÄÖÜ.,!?- ↩︎
ok ich habe jetzt alles gemacht.
aber noch eine frage:
man kann doch in der shell durch bestimmte zeichen schaden anrichten. z.b. durch "rm -rf /
". was passiert wenn ich alle verbotenen zeichen in dieses zeichen ° umwandle. kann dann jemand, wenn er raus findet das alle verbotenen zeichen in dieses ° zeichen umgewandelt werden, noch irgendetwas anstellen.
Halihallo markus
man kann doch in der shell durch bestimmte zeichen schaden anrichten. z.b. durch "
rm -rf /
". was passiert wenn ich alle verbotenen zeichen in dieses zeichen ° umwandle. kann dann jemand, wenn er raus findet das alle verbotenen zeichen in dieses ° zeichen umgewandelt werden, noch irgendetwas anstellen.
In welchem Kontext verwendest du das Programm? - Woher kommen die Inputparameter?
Und wohin bzw. wozu geht/brauchst du den Inputparameter? - Wie sieht der _Quelltext_ aus?
Deine Frage lässt sich allgemein nicht beantworten, auch wenn ich glaube, dass man
normalerweise mit einem ° wenig anstellen kann. Im Sinne einer guten Programmierung
jedoch, würde ich ein unerlaubtes Zeichen gar nicht erst zulassen (keine Konvertierung
zu ° nötig), zudem: Woher weisst du, dass ein ° in _keinem_ Betriebssystem oder Shell
etwas bedeuten könnte (zumal es mehrere OS und Shells gibt ist wenn möglich eine
allgemeine Lösung anzustreben)?
Oder anders: Wie definierst du "verbotene Zeichen", aus welchen Zeichen besteht diese
Menge?
Viele Grüsse
Philipp
hi,
also die input-parameter kommen von einem formular das mit post, die parameter an mein perl-prog gibt. die felder werden überprüft und wenn verbotene zeichen, dann werden sie in dieses ° zeichen umgewandelt. danach werden die daten an mich per email übertragen.
ich will dieses zeichen verwenden, damit ich erkennen kann das da einmal ein zeichen, wie z.B. ", an der stelle war.
Hi
ist deises suchmuster von der reihenfolger her richtig:
/[1]+$/
Wenn du die Zeichen in einer eckigen Klammer hast ist das egal, da sie dann ja als ODER gesucht werden. Ob du "a ODER b" suchst oder ob du "B oder A" suchst ist ja egal.
Allerdings mußt du noch einige weitere Zeichen escapen, also
/[2]+$/
Denn der "." würde sonst "irgentein Zeichen" bedeuten, "!" bedeutet "NICHT" etc.
Gruß
csx
Hi csx,
Allerdings mußt du noch einige weitere Zeichen escapen
Richtiger Hinweis, aber
/[1]+$/
^^ ^^
In diesem Ausdruck müssen nur der "." und das "?" gematcht werden, die anderen nicht.
http://www.perldoc.com/perl5.8.0/pod/perlre.html#Regular-Expressions
Viele Grüße
Torsten
\w\s@äöüÄÖÜ.,!?- ↩︎
Hi Torsten
/[1]+$/
^^ ^^
In diesem Ausdruck müssen nur der "." und das "?" gematcht werden, die anderen nicht.
Joo, hast Recht. Schaden tut's aber (IIRC) auch nicht. Wenigstens den "-" escape ich eigentlich immer, damit ich den nicht ausversehen zur definition eines ASCII-Zeichenraumes ([A-C] oder so) verwende...
gruß
csx
\w\s@äöüÄÖÜ.,!?- ↩︎