Entwickler-Ecke

Programmiersprachen (Server) - Zeichen aus Strings herausfiltern


stigge - Fr 28.09.07 22:47
Titel: Zeichen aus Strings herausfiltern
Hallo,

ich möchte in einem PHP-Skript Strings untersuchen, ob sie andere Zeichen als A-Z, a-z, 0-9 oder _- enthalten. Mit Google habe ich einige Codes gefunden, die aber alle nicht funktionieren wollen warum auch immer.
Hiermit habe ich nach Lösungen gesucht damit ihr nicht denkt das ich nur zu faul bin:
http://www.google.de/search?client=firefox-a&rls=org.mozilla%3Ade%3Aofficial&channel=s&hl=de&q=php+string+auf+sonderzeichen+untersuchen&meta=&btnG=Google-Suche

Ich habe die ersten Seiten durchgesehen und habe nichts funktionierendes gefunden.
Hat jemand einen funktionierenden Code?

MfG,

Stigge


direction4delphi - Sa 29.09.07 00:28
Titel: Re: Zeichen aus Strings herausfiltern
user profile iconstigge hat folgendes geschrieben:
Hallo,

ich möchte in einem PHP-Skript Strings untersuchen, ob sie andere Zeichen als A-Z, a-z, 0-9 oder _- enthalten. Mit Google habe ich einige Codes gefunden, die aber alle nicht funktionieren wollen warum auch immer.
Hiermit habe ich nach Lösungen gesucht damit ihr nicht denkt das ich nur zu faul bin:
http://www.google.de/search?client=firefox-a&rls=org.mozilla%3Ade%3Aofficial&channel=s&hl=de&q=php+string+auf+sonderzeichen+untersuchen&meta=&btnG=Google-Suche

Ich habe die ersten Seiten durchgesehen und habe nichts funktionierendes gefunden.
Hat jemand einen funktionierenden Code?

MfG,

Stigge



Regular Expressions sind dein Freund (ereg - http://www.php.net/ereg) oder (preg_match - http://www.php.net/manual/de/function.preg-match.php)

Hier sollte alles so erklärt sein das du jede Form des Vorkommens checken kannst.

Gruß
direction


r2c2 - Sa 29.09.07 08:48

preg_replace() oder selber drüber iterieren...

mfg

Christian


direction4delphi - Sa 29.09.07 16:34

user profile iconr2c2 hat folgendes geschrieben:
preg_replace() oder selber drüber iterieren...

mfg

Christian


War ja nicht die Rede davon die Zeichen zu ersetzten, sondern nur zu checken ob diese Vorkommen - aber zum ersetzten - Bestens

Gruß
direction


r2c2 - Sa 29.09.07 17:06

user profile icondirection4delphi hat folgendes geschrieben:

War ja nicht die Rede davon die Zeichen zu ersetzten, sondern nur zu checken ob diese Vorkommen - aber zum ersetzten - Bestens

Tjoa... Ich war ehrlich der Meinung, dass das Ersetzen gesucht war. Deshalb hab ich statt dem schon erwähnten preg_match preg_replace vorgeschlagen... Ich sollte wohl nochmal meine Brille putzen... :oops:

mfg

Christian


GTA-Place - Do 04.10.07 13:48

Mach dir nix draus. Laut Titel will er sie herausfiltern, was für mich ersetzen gleich kommt ;-).


Christian V. - Do 04.10.07 14:17

Das hier als RegEx verwenden:
/([^a-z\-_0-9]*)/i

Achtung: Umlaute werden so entfernt. Falls du die Umlaute behalten willst:
/([^a-z\-_0-9äöü]*)/i


stigge - Sa 06.10.07 11:34

Sorry das ich solange nicht geantwortet habe.
Nach langem Ausprobieren funktioniert es:

Quelltext
1:
2:
if (preg_match('#^[a-z0-9-_]*$#i', $string) == 0)
{echo "nicht ok";}else{ echo "ok";}

Danke für die Hilfe!

P.S.: Ich wollte nur überprüfen ob Sonderzeichen vorkommen, nicht sie ersetzen. Der Titel war echt etwas irreführend, stimmt schon :wink: