Hilfe mit Regex: Ascii-Zeichen Eingrenzung erweitern

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Hasu0bs

Hilfe mit Regex: Ascii-Zeichen Eingrenzung erweitern

Beitrag 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
Zuletzt geändert von Hasu0bs am 11.04.2008 15:48, insgesamt 4-mal geändert.
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Beitrag von 4seven »

Das ist bestimmt ein Test, wie gut wir's wirklich drauf haben.
Also Jungs, legt euch ins Zeug :D
Hasu0bs

Beitrag 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
Hasu0bs

Beitrag 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
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag 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...)
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Re: Hilfe mit Regex: Ascii-Zeichen Eingrenzung erweitern

Beitrag 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
    }
Hasu0bs

Beitrag 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
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Beitrag 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).
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Antworten

Zurück zu „Coding & Technik“