Datenvalidierung in PHP: Vollständiger Leitfaden zu Tools und Bibliotheken

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Datenvalidierung in PHP: Von integrierten Funktionen bis zu professionellen Bibliotheken



Datenvalidierung ist einer der Grundpfeiler sicherer und stabiler Webanwendungen. In PHP gibt es viele Ansätze: von einfachen integrierten Funktionen bis hin zu leistungsstarken Bibliotheken, die das Entwurfsmuster „Verantwortungskette“ (Chain of Responsibility) implementieren und komplexe Prüfszenarien unterstützen. In diesem Artikel betrachten wir drei beliebte Werkzeuge zur Validierung in PHP: Respect\\Validation, Symfony Validator und Aura.Filter, und erinnern auch an die integrierten Möglichkeiten der Sprache.



1. Integrierte PHP-Funktionen

Bevor Sie externe Bibliotheken einbinden, sollten Sie bedenken, dass PHP grundlegende Werkzeuge zum Filtern und Prüfen von Daten bereitstellt:

  • filter_var() — Prüfung und Bereinigung von Daten anhand von Filtern (E-Mail, URL, Integer usw.)
  • preg_match() — Prüfung mit regulären Ausdrücken
  • empty(), is_numeric(), strlen() — einfache Prüfungen
  • ctype_alpha(), ctype_digit() — Prüfung von Zeichensätzen

Beispiel für die Verwendung von filter_var:

<?php$email = "user@example.com";if (filter_var($email, FILTER_VALIDATE_EMAIL)) {    echo "E-Mail ist korrekt";} else {    echo "Ungültige E-Mail";}?>


2. Respect\\Validation

Respect\\Validation ist eine der beliebtesten Bibliotheken zur Validierung in PHP. Ihr Hauptvorteil ist die lesbare, verkettbare Syntax (fluent interface) und eine riesige Anzahl vorgefertigter Regeln (über 100).

Installation

composer require respect/validation

Anwendungsbeispiel

<?phpuse Respect\\Validation\\Validator as v;

$user = [ 'name' => 'Ivan', 'email' => 'ivan@test.com', 'age' => 25, 'website' => 'https://example.com'];

$validator = v::key('name', v::stringType()->length(2, 50)) ->key('email', v::email()) ->key('age', v::intType()->between(18, 120)) ->key('website', v::optional(v::url()));

try { $validator->assert($user); echo "Daten sind gültig!";} catch (\\Respect\\Validation\\Exceptions\\NestedValidationException $e) { print_r($e->getMessages());}?>

Die Bibliothek unterstützt benutzerdefinierte Fehlermeldungen, verschachtelte Array-Validierung und ermöglicht die Kombination von Regeln über allOf(), oneOf() und noneOf().



3. Symfony Validator

Die Komponente Symfony Validator ist Teil des Symfony-Ökosystems, kann aber auch separat verwendet werden. Sie ist ein Industriestandard für die Validierung komplexer Datenstrukturen mit Unterstützung für Annotationen, XML- und YAML-Konfigurationen.

Installation

composer require symfony/validator

Beispiel mit Attributen (PHP 8+)

<?phpuse Symfony\\Component\\Validator\\Validation;use Symfony\\Component\\Validator\\Constraints as Assert;

class User{ #[Assert\\NotBlank] #[Assert\\Length(min: 2, max: 50)] public string $name;

#[Assert\\NotBlank] #[Assert\\Email] public string $email;

#[Assert\\NotBlank] #[Assert\\Positive] #[Assert\\LessThan(150)] public int $age;}

$user = new User();$user->name = 'Ivan';$user->email = 'ivan@test.com';$user->age = 25;

$validator = Validation::createValidatorBuilder() ->enableAttributeMapping() ->getValidator();

$violations = $validator->validate($user);

if (count($violations) === 0) { echo "Validierung bestanden!";} else { foreach ($violations as $violation) { echo $violation->getPropertyPath() . ': ' . $violation->getMessage() . ""; }}?>

Symfony Validator unterstützt Validierungsgruppen, kaskadierte Prüfung in

Empfehlungen