PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : String filtern



bockionline
23-01-2005, 13:21
Hallo,

ich habe ein kleines (Verständnis-)Problem:

Ich möchte einen String auslesen (sei es nun aus $_GET, $_COOKIE etc.), der nur aus a-z, A-Z und 0-9 bestehen darf. Natürlich kann jemand versuchen, mir irgendetwas anderes unterzuschieben.

Auf meine Anforderung passt ja der reguläre Ausdruck "/^[a-zA-Z0-9]+$/".

Wie erreiche ich nun aber, dass mein Eingabestring entsprechnd des regulären Ausdrucks gefiltert wird (d.h. alle ungewünschten Zeichen einfach wegfallen)?

Beispiele:
Test -> Test
_Test -> Test
aäeiö -> aei
--hallo -> hallo
etc.

Ich hätte gerne etwas der Art

function($ungepruefterstring) {
... Umwandlung entsprechend Anforderungen...
retun $gepruefterstring;
}
was ich als Filter an beliebigen Stellen einbauen kann.

Könnt ihr mir helfen?

Vielen Dank,
bockionline

quinte17
23-01-2005, 18:05
ich bin mit den regex funktionen nicht so vertraut in php aber das sollte dir helfen können:
http://de.php.net/manual/de/function.ereg-replace.php
greetz

bockionline
23-01-2005, 18:35
Hm, danke.

Die verschiedenen replace_* Funktionen hab ich auch schon gefunden. Mein Problem ist aber, die Negation meines regulären Ausdruckes hinzubekommen. Denn wenn ich den geposteten nehmen würde, würde er ja gerade die gewünschten Zeichen rausfiltern und die ungewünschten drinlassen...

Stefan_1
24-01-2005, 08:54
Hi, könnte es nicht einfach mit:



if (!( string[x]>a && string[x]>Z ) && !( string[x]>1&& string[x]>0 ) ){
// nicht( Zwischen a und Z) und nicht( Zwischen 1 und 0)
string=substr(string,0,x-1).substr(string,x+1)
x--;
//String = teilstring( von 0 bis x-1 ) und teilstring( ab dem nächsten x )
// wobei x-1 gesetzt werden muß da sonst ein Wert übersprungen wird..
}

bzw


if (( string[x]>a && string[x]>Z ) || ( string[x]>1&& string[x]>0 ) ) {
// (Zwischen a und Z) oder ( Zwischen 1 und 0)
string2[y]=string[x]
y++;
}


Funktionieren?

Das ganze musst natürlich in ner for schleife sein, welches bis zum ende des strings läuft, ist durch strlenght(?) aber kein Problem!
Ist zwar nicht die schönste aber geht und ist erweiterbar ( falls doch noch irgendwann )!

Hoffe, dass ich nicht zu viele Fehler drin hab, bin schon ne ganze weile nicht mehr zum PHP coden gekommen...

Stefan

quinte17
24-01-2005, 10:38
code tags wärn noch recht nett ^^
wenn du die noch hineinändern könntest ;)

Gaert
24-01-2005, 10:55
code tags wärn noch recht nett ^^
wenn du die noch hineinändern könntest ;)
Ich war mal so frei...

jofisch
24-01-2005, 13:15
suchst du vielleicht das? ;)


<?php
echo eregi_replace("[^A-Za-z0-9]", "", $string);
?>

$string = "Test"
Ausgabe: "Test"

$string = "_Test"
Ausgabe: "Test"

$string = "aäeiö"
Ausgabe: "aei"

$string = "--hallo"
Ausgabe: "hallo"

mfg
jofisch