MudGuard: PHP - 'preg_match' Funktion

Beitrag lesen

Hi,

if(!preg_match("/[a-zA-Z]{1}/", $_POST['username'])) $FehlerNr = 1;
Hier wird aber nur der erste Buchsabe geprüft und nicht die restlichen Zeichen.

Nein, hier wird überprüft, ob ein beliebiges Zeichen ein Buchstabe ist.
{1} kannst Du weglassen.

Wenn Du das 1. Zeichen überprüfen willst, mußt Du den Regex am Stringanfang verankern mit ^ (so wie Du es im nächsten Ausdruck gemacht hast).

if(!ereg("^[a-zA-Z0-9_-]{3,100}$", $_POST['username'])) $FehlerNr = 1;

Warum nutzt Du hier ereg? Das Zeug ist veraltet, soll demnächst aus PHP entsorgt werden ...

Hier ist es möglich ein Name wie z. Bsp. 123Teoleo einzugeben.

Natürlich - die 1. Prüfung schlägt z.B. auf das T an, die zweite Prüfung erlaubt Ziffern auch an Position 1.

Du willst aber: 1. Zeichen [a-zA-Z], danach 2 bis 24 mal [a-zA-Z0-9_-] (zumindest laut erstem Posting, hier hast Du 100 statt 25 Zeichen erlaubt).

Also:
/[1][a-zA-Z0-9_-]{2,24}$/

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.

  1. a-zA-Z ↩︎