Mailinglisten-Archive |
On Thursday 12 July 2001 15:02, Thomas Beckmann wrote: > >> > Hallo zusammen, > > > >[...] > > > >Weiss da wirklich keiner was zu ? > > Wozu ? > > --- > Thomas Beckmann, Kiel, Germany > beckmann_(at)_gis.de OK, da ich scheinbar der Einzige bin, der diese Mails erhalten hat, fasse ich den Thread hier kurz zusammen: Die urspruengliche Mail kam von Ithmar Garbe: Hallo zusammen, wieder einmal bereitet mir ein Skript Kopfzerbrechen: Ich möchte Adressfelder, die von einem Formular überprüft werden, in eine Datenbank speichern. Nun gibt es ja Leute, die Spasshalber irgendwelche Daten eingeben, und damit die Datenbank zumüllen. Deswegen versuche ich, solche Spässlein zu finden und zu verbieten. Beispielsweise überprüfe ich, ob der Name die Zeichenkette "asdf" enthält, die man ja ziemlich gern, oft und schnell eintippt. Das funktioniert auch sehr gut, allerdings möchte ich noch einen Schritt weitergehen, und überprüfen, ob jemand 3 oder mehr gleiche Zeichen hintereinander eingibt, z.B. "aaaa". Solche Zeichen können auch inmitten von anderen Zeichen vorkommen, z.B. "aaafgsdf", dies möchte ich alles rausfiltern. Ich habe bis jetzt mein PHP-Buch gewälzt und keine RegExp gefunden, die eine sich wiederholende Zeichenkette in einem String erkennt. Besteht die Eingabe _nur_ aus der Zeichenkette, ist das kein Problem, wie sage ich PHP aber, dass sich die gesuchten Zeichen inmitten eines Textes verstecken? Mal eine andere Frage: Könnte es damit Probleme geben, wenn ich so etwas überprüfe, z.B. wenn jemand 3 gleiche, aufeinanderfolgende Zeichen in seinem Namen hat (was ich nicht glaube)? Ich möchte natürlich nicht potenzielle Kunden vergraulen, weil deren Name nicht akzeptiert wird... Und nochwas: Hat jemand ne Idee, wie ich das ganze noch sicherer machen könnte, ohne dass es übertrieben wird? Codeschnipsel sind immer gern gesehen ;-))) Gruss, Ithamar Garbe +++++ Darauf hin habe ich geantwortet: On Wednesday 11 July 2001 23:06, Ithamar Garbe wrote: > Hallo zusammen, > > wieder einmal bereitet mir ein Skript Kopfzerbrechen: > [...] > Das funktioniert auch sehr gut, allerdings möchte ich noch einen > Schritt weitergehen, und überprüfen, ob jemand 3 oder mehr gleiche > Zeichen hintereinander eingibt, z.B. "aaaa". Solche Zeichen können > auch inmitten von anderen Zeichen vorkommen, z.B. "aaafgsdf", dies > möchte ich alles rausfiltern. mmh, mit dem sed sieht das so aus: [gerd_(at)_devel:~]$ echo coooooololo | sed -e 's/\(.\)\1\{2,\}/\1\1/' coololo der ausdruck findet alle zeichen, die 2x oder oefter (kann man ja anpassen) nacheinander kommen und ersetzt sie durch 2 derselben. man kann sie auch durch gar nix ersetzen lassen, wie man will. zur erklaerung: die klammer \(.\) definiert eine gruppe beliebiger zeichen, durch den identifier \1 wird sich auf diese (erste klammer) bezogen, \{2,\} wiederum sagt aus, dass sich das vorige konstrukt nur auf zeichen auswirken soll, die 2x oder oefters vorkommen. diese werden dann im zweiten teil mittels \1\1 durch zwei der zeichen, die die klammer bestimmt, ersetzt. soweit zur theorie. wie das aber in php mit einer {e,p}reg(i)(_replace)-funktion aussieht wuesste ich auch gerne ;-) vielleicht ist ja einer so fit in php-regex, dass er mein konstrukt oben umwandeln kann. mfg, gerd ++++ Und danach kam nichts mehr, ausser einer PM von Fred, der gerne die Ursprungsmail geschickt bekommen wollte. Vielleicht faellt ja jetzt jemandem was dazu ein. mfg, Gerd -- /"\ \ / ASCII Ribbon Campaign x Say NO to HTML in email and news !! / \
php::bar PHP Wiki - Listenarchive