dedlfix: Problem mit preg_match

Beitrag lesen

Hi!

Oder aber, du lässt sie drin und nimmst (ohne die explode()s) die Reg-Exp-Prüfung als erste (inklusive 1-5 Ziffern für den Port). Die stellt sicher, dass nur Ziffern enthalten sind und die IP nebst Port strukturell richtig ist. Mit den Gruppen kannst du anschließend die Grenzwerteinhaltung prüfen.

Das war der Vorschlag für eine alternative Vorgehensweise, bei der nur der Regex und die Grenzwertprüfung übrigbleiben. Die Prüfung wäre dann lediglich:

if (preg_match("!^(\d{1,3}).(\d{1,3}).(\d{1,3}).(\d{1,3}):(\d{1,5)$!", $_POST..., $matches) &&
    $matches[1] < 256 && $matches[2] < 256 && ... && $matches[5] < 65536)

Jetzt könnte es noch ein kleines Problem geben: vorangehende Nullen. Manche Systeme haben sich damit etwas affig. In dem Fall müsste der Regex je Gruppe etwas anders aussehen: ([1-9]\d{,2}). Benutzerfreundlicher wäre es jedoch, die Nullen in der Eingabe zuzulassen und sie selbst aus den Matches zu entfernen (z.B. mit ltrim()) und die Adresse wieder zusammenzusetzen.

Lo!