Sonderzeichen --> Überprüfen

putzi

Gesperrt
Hallo!

Ich möchte den Benutzernamen des Users auf Leerzeichen, Sonderzeichen, und Umlaute überprüfen.

Wie mache ich das?
 
für solche Stringüberprüfungen machen sich reguläre Ausdrücke immer recht gut. Du könntest zwar mit strpos prüfen ob die jeweiligen Zeichen vorkommen, aber bei der Menge an Zeichen ist das zum Einen ein viel zu großer Aufwand und zum Anderen auch noch langsam.

ein kleines Beispiel (allerdings nur für Umlaute, aber für den Ansatz reichts, sollst ja was lernen :-)):

PHP:
<?php

$string  = 'Das ist ein String mit einigen sehr schönen und gängigen Umlauten.';
$pattern = '#[äöü]#';

if( preg_match($pattern, $string) ) {
    // Sonderzeichen drin
}

?>

näheres findest unter http://www.php.net/preg_match
 
Bestimme lieber die Gruppe der erlaubten Zeichen als die der nicht erlaubten Zeichen:
PHP:
preg_match('/[^a-zA-Z…]/', $string)
 
Ich wüsste gern wie man das anwendet :rolleyes:

PHP:
if (!preg_match('/[^0-9a-zA-Z]([-_.]?[0-9a-zA-Z])/', $_POST['user'])) $error .= '<li>Der Benutzername enth&auml;lt Sonderzeichen</li>';

Das funktioniert nicht.
Nutzernamen dürfen aus folgenden Zeichen bestehen: [a-zA-Z0-9-_.]

Der sagt mir bei dem Code das: "test" Sonderzeichen enthält. :rolleyes:

Thx 4 help
 
Online-Skater hat gesagt.:
Ich wüsste gern wie man das anwendet :rolleyes:

PHP:
if (!preg_match('/[^0-9a-zA-Z]([-_.]?[0-9a-zA-Z])/', $_POST['user'])) $error .= '<li>Der Benutzername enth&auml;lt Sonderzeichen</li>';
Thx 4 help

die regel ist lediglich etwas falsch

PHP:
if (!preg_match('/[0-9a-zA-Z-_.]/', $_POST['user'])) $error .= '<li>Der Benutzername enth&auml;lt Sonderzeichen</li>';

versuch das mal
mit dem dach (^) hast du ihm gesagt das diese zeichen nicht vorkommen sollen
 
Danke zumindest funktioniert der Benutzername: "test" jetzt, genau genommen geht alles solange man als Benutzername nicht NUR Sonderzeichen nimmt.
Das heißt Sinn verfehlt :rolleyes:

Es geht nicht: ######## -> richtig
Es geht aber: bla##### ->falsch

Also sobald ein erlaubtes Zeichen drin ist, ist alles in Ordnung aber es soll ja umgekehrt laufen, sobald ein Sonderzeichen drin ist, soll es angezeigt werden.
 
Du hättest doch einfach nur meinen Vorschlag anpassen müssen:
PHP:
preg_match('/[^a-zA-Z0-9-_.]/', $string)
 
Vielen Dank

leider kenne ich mich mit preg_match garnicht gut aus, gibt es auch ne deutsche Erklärung und vor allem Übersichtlichere Darstellung folgender Seite: pattern

Danke.
 
Zurück