Seite 1 von 1

Hilfe mit Regex: Ascii-Zeichen Eingrenzung erweitern

Verfasst: 08.04.2008 17:25
von Hasu0bs
Hallo
ich habe in der Funktion set_var folgendes gefunden, wenn multibyte deaktiviert ist:

preg_replace('/[\x80-\xFF]/', '?', $result);

Die 80 steht für 128 und das FF für 255. Das ersetzt also alle Zeichen zwischen 128 und 255 durch ? jetz will ich aber ÄÜÖ äüö ß von der Ersetzung Ausschließen also C4 D6 DC sowie E4 F6 FC und DF (das sind bereits die Hexadezimal codes der Zeichen die ich nicht ersetzt haben will ;) )nicht ersetzen. Weiß wer Rat?

Gruß Hasu0bs

Verfasst: 08.04.2008 17:42
von 4seven
Das ist bestimmt ein Test, wie gut wir's wirklich drauf haben.
Also Jungs, legt euch ins Zeug :D

Verfasst: 08.04.2008 18:48
von Hasu0bs
nein :D kein Test, ich will einfach, dass der Benutzer zwar alle deutschen Buchstaben benutzen kann, jedoch nicht solche Komsichen Listenzeichen oder irgendwelchen ~''*`´^ zeichen :P

Gruß Hasu0bs

Verfasst: 11.04.2008 15:47
von Hasu0bs
:( Gibts hier keine Leute die sich mit Regexen auskennen?

Wenn ich jetz schreibe:

preg_replace('/[\x80-\xFF][^\xC4\xD6\xDC\xE4\xF6\xFC\xDF]/', '?', $result);

is das mit sicherheit falsch :( :(

Gruß Hasu0bs

Verfasst: 11.04.2008 18:57
von S2B
Du musst wohl oder übel die Menge aufteilen, als Beispiel für a-z ohne d und s:

Code: Alles auswählen

[a-ce-rt-z]
(Normal sollte das so funktionieren...)

Re: Hilfe mit Regex: Ascii-Zeichen Eingrenzung erweitern

Verfasst: 11.04.2008 21:12
von Xwitz
@ Hasu0bs, Du willst die Zeichen doch eigentlich löschen und nicht mit einem Fragezeichen ersetzen oder?

Dann schaue Dir mal an, was folgender Code ausgibt.

Code: Alles auswählen

for ($i = 0; $i <= 9; $i++) {
      echo preg_replace('/(2)|(4)|(7)|[0-9]/', "$1$2$3", $i); // 247
    }

Verfasst: 12.04.2008 12:10
von Hasu0bs
Nö das Fragezeichen kann eigentlich bleiben, ich will dem Benutzer ja zeigen, dass er ein "verbotenes" Zeichen benutzt hat. Dann mussich wohl die Bereiche einzeln abdecken, aber danke für die Hilfe. Ich dachte es gäbe sowas wie "ausgenommen ..." mit dem ^ aber jut ;)

Danke Hasu0bs

Verfasst: 12.04.2008 13:29
von cYbercOsmOnauT
Kommt drauf an, welche Zeichen Du überhaupt zulassen willst.

Code: Alles auswählen

preg_replace('#[^\w.\-äöüß]#i', '?', $result)';
Damit lässt Du a-z, 0-9, ., -, _, ä, ö, ü, ß zu (Wobei ich mir beim Eszet nicht sicher bin, ob der so im Code klappt).