Schrift
[thread]8191[/thread]

"sichere" Zeichenketten mit tr?: gehts besser? schneller? einfacher?

Leser: 2


<< |< 1 2 >| >> 14 Einträge, 2 Seiten
sosum
 2006-07-23 21:41
#68318 #68318
User since
2006-01-10
11 Artikel
BenutzerIn
[default_avatar]
Hi Gemeinde,

also erstmal möchte ich den Leuten hier im Forum ein dickes Lob aussprechen! Mir ist bislang noch keine vergleichbare Hilfsbereitschaft und Kompetenz in den diversen Foren, die ich besuche, aufgefallen.

Nun zu der aktuellen Frage, vor der ich mich schon länger drücke:

Ich möchte Zeichenketten "sichern", will heissen möchte alle nicht alphabetischen Zeichen oder Zahlen daraus entfernen -und das möglichst effizient.

Zunächst jage ich so etwas wie
Code: (dl )
${$statement} =~ tr/[a-zA-Z0-9öäüßÄÖÜ]/_/c;         

drüber, was schon einiges tut, doch die ganzen Unterstriche nerven und werden mit s/_//g entfernt werden. Doch kommt mir irgendwie hornochsig vor, das so zu tun.

"tr" sollte das doch irgendwie auch können. Lasse ich aber den Unterstrich weg, passiert gar nix... irgendwie hab ich da einen Denkfehler.

Da weiss doch sicherlich jemand Rat.

lg sosum
lichtkind
 2006-07-23 22:02
#68319 #68319
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
du kannst es auch in einem schritt machen denn mit tr//d entfernt man zeichen direkt nur das mit den eckigen klammern wird nicht klappen da tr suchlisten annimmt
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
lichtkind
 2006-07-23 22:20
#68320 #68320
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
fürs erste geht vielleicht =~ s/[^a-zA-Z0-9öäüßÄÖÜ]//g;
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
GwenDragon
 2006-07-23 22:43
#68321 #68321
User since
2005-01-17
14757 Artikel
Admin1
[Homepage]
user image
Nein, das ist nicht so konkret richtig.

Ich denke sowas wäre eine Lösung (ohne Gewähr).
Code: (dl )
1
2
3
use locale; 
use utf8;
$safestring =~ s/[\p{IsDigit}\p{IsAlpha}]/_/g;

bzw.
Code: (dl )
1
2
3
4
use POSIX;
use locale;

$safestring =~ s/[[:IsDigit:][:IsAlpha:]]/_/g;
lichtkind
 2006-07-23 22:44
#68322 #68322
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
wieso stimmt die lösung nicht?
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
GwenDragon
 2006-07-23 22:54
#68323 #68323
User since
2005-01-17
14757 Artikel
Admin1
[Homepage]
user image
Ganz einfach, sie ist nur bei 8-Bit-Zeichensätzen richtig! ;)

Außerdem ist es mit Angabe der vorgefertigten Zeichenklassen einfach einfacher für Denkfaule wie mich ;)
lichtkind
 2006-07-23 23:05
#68324 #68324
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
gut aber kürzer wäre:

$safestring =~ s/[[:Alnum:]]/_/g;
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
GwenDragon
 2006-07-23 23:20
#68325 #68325
User since
2005-01-17
14757 Artikel
Admin1
[Homepage]
user image
Haste recht.

dontwork(OnPC::User("GwenDragon")) if My::Room::GetTemperature() > 29; wäre wohl bei mir gerade nötig. Ich geh mal mich abkühlen.
sid burn
 2006-07-24 12:52
#68326 #68326
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[:IsDigit:][:IsAlpha:]...
erkennt aber auch alle möglichen Zahlen und Buchstaben von anderen Sprachen. Es ist jetzt eine Frage ob man als Deutscher Benutzer sowas als Sonderzeichen zählt, oder nicht.

Hängt denke ich mal von der Aufgabe/Programm ab, was man genau erreichen möchte.

Quote
Ganz einfach, sie ist nur bei 8-Bit-Zeichensätzen richtig! ;)

Wie meinst du das? Wenn ich [a-z] eintippe dann matcht er [a-z] auch bei UTF8.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
GwenDragon
 2006-07-24 14:48
#68327 #68327
User since
2005-01-17
14757 Artikel
Admin1
[Homepage]
user image
@sid burn

Quote
sosum schrieb:
Ich möchte Zeichenketten "sichern", will heissen möchte alle nicht alphabetischen Zeichen oder Zahlen daraus entfernen -und das möglichst effizient.

Er schrieb nicht alle nichtdeutschen Zeichen.
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2006-07-23 21:41.