Filter Funktionen in PHP

Seit geraumer Zeit wissen wir ja nun schon, dass PHP5 einige Vorteile gegenüber seines sehr in die Jahre gekommenen Vorgängers PHP4 mit sich bringt. Allerdings sind mir erst heute die Filter Funktionen in PHP aufgefallen, welche ab PHP5.2 von Hause aus implementiert sind. Ich möchte heute verdeutlichen, welche Vorteile diese Filter Funktionen mit sich bringen.

Nehmen wir einfach an wir möchten Formulareingaben validieren. Unter diesen Formulareingaben befindet sich auch eine vermeindliche E-Mail Adresse. Wir wissen noch nicht, ob es sich um eine richtige E-Mail Adresse handelt. Bisher habe ich die Angabe einer E-Mail Adresse in einem Formular immer mit einem regulären Ausdruck geprüft. Das sah dann ungefähr so aus:

public function validate() {
    parent::validate();
    if (!preg_match('/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$', $this->email)) {
        throw new UserInputException('email', 'not valid');
    }
}

Gut, es gibt genügend Vorlagen für eine RegEx Validierung von E-Mail Adressen aus dem Netz. Letztendlich sollte man diese aber auch verstehen. Manchmal sind diese regulären Ausdrücke auch so koplex, dass man irgendwann den Wald vor lauter Bäumen nicht mehr sieht.
Wer keine Lust auf reguläre Ausdrücke hat, bekommt ab PHP5.2 die Möglichkeit Variablen mit Filtern zu bearbeiten. Wie schön einfach das aussehen kann, zeige ich Euch jetzt mal am nächsten Beispiel.

public function validate() {
    parent::validate();
    if (!filter_var($this->email, FILTER_VALIDATE_EMAIL)) {
        throw new UserInputException('email', 'not valid');
    }
}

Auf den ersten Blick erst mal ein bisschen weniger Code, was grundsätzlich immer gut ist, sofern man dabei den gleichen Effekt erzielt. Genau das tun wir nämlich mit diesem Beispiel. Mit der Funktion filter_var() schicken wir die Variable durch einen bestimmten Filter. In diesem Fall ist es der Filter FILTER_VALIDATE_EMAIL, der dafür sorgt, dass eine E-Mail Adresse validiert wird. Es gibt noch etliche weitere vordefinierte Filter in PHP. Wer sich einen Überblick verschaffen möchte, sollte unbedingt mal einen Blick in die Dokumentation werfen: Filter Funktionen.

2 Gedanken zu „Filter Funktionen in PHP“

  1. Cool Marcel 🙂
    freue mich schon auf die nächste AG stunde in der Schule…
    Zum Thema:
    Geht so eine filter function nicht auch per array? ich dachte immer, das dies einfacher wäre… Da es dafür doch ganz viele funktionen von PHP selbst gibt.
    Was ich meine ist ohne klassen, als reiner PHP code…
    MFG
    Leon aus der KKS neubeckum

    Antworten

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.