Signatur
Beschreibung
datefmt_set_lenient() ist die prozedurale Variante der Methode IntlDateFormatter::setLenient() und legt fest, ob der Parser beim Analysieren von Datumszeichenketten im Nachsichtigkeitsmodus (lenient mode) arbeitet oder nicht.
Im nachsichtigen Modus (true) werden ungenaue oder fehlerhafte Datumseingaben soweit möglich akzeptiert und interpretiert. Ist der Modus deaktiviert (false), verarbeitet der Parser nur exakt gültige Eingaben und schlägt bei Abweichungen fehl. Dies ist besonders beim Verarbeiten von Benutzereingaben relevant, wo Daten streng validiert werden sollen.
Standardmäßig ist der Nachsichtigkeitsmodus aktiviert. Für Anwendungen, die eine strikte Eingabevalidierung erfordern (z. B. Formulare, APIs), empfiehlt es sich, den Modus auf false zu setzen, um fehlerhafte Datumseingaben zuverlässig abzufangen.
Die Funktion gibt true bei Erfolg zurück. Der aktuelle Modus kann mit datefmt_is_lenient() abgefragt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $formatter Pflicht | IntlDateFormatter | Das IntlDateFormatter-Objekt, dessen Nachsichtigkeitsmodus geändert werden soll. |
|
| $lenient Pflicht | bool | Gibt an, ob der Nachsichtigkeitsmodus aktiviert (true) oder deaktiviert (false) sein soll. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler.Beispiele
Nachsichtigen Modus deaktivieren und ungültige Eingabe ablehnen
<?php
$formatter = datefmt_create(
'de_DE',
IntlDateFormatter::LONG,
IntlDateFormatter::NONE,
'Europe/Berlin',
IntlDateFormatter::GREGORIAN
);
// Standardmäßig ist der Nachsichtigkeitsmodus aktiv
var_dump(datefmt_is_lenient($formatter)); // bool(true)
// Nachsichtigkeitsmodus deaktivieren
datefmt_set_lenient($formatter, false);
var_dump(datefmt_is_lenient($formatter)); // bool(false)
// Strikt ungültige Eingabe parsen
$result = datefmt_parse($formatter, '32. Januar 2024');
if ($result === false) {
echo 'Ungültiges Datum wurde abgelehnt: ' . datefmt_get_error_message($formatter);
} else {
echo 'Geparster Timestamp: ' . $result;
}
Nachsichtigen Modus aktivieren und fehlerhafte Eingabe tolerieren
<?php
$formatter = datefmt_create(
'de_DE',
IntlDateFormatter::LONG,
IntlDateFormatter::NONE,
'Europe/Berlin',
IntlDateFormatter::GREGORIAN
);
// Nachsichtigkeitsmodus aktivieren (ist standardmäßig bereits aktiv)
datefmt_set_lenient($formatter, true);
var_dump(datefmt_is_lenient($formatter)); // bool(true)
// Nachsichtige Eingabe parsen — der 32. Januar wird als 1. Februar interpretiert
$result = datefmt_parse($formatter, '32. Januar 2024');
if ($result !== false) {
echo 'Geparster Timestamp: ' . $result . "\n";
echo 'Datum: ' . date('d.m.Y', $result);
} else {
echo 'Fehler: ' . datefmt_get_error_message($formatter);
}
// Wichtig · Fallstricke
Sicherheitshinweis: Bei der Verarbeitung von Benutzereingaben sollte der Nachsichtigkeitsmodus grundsätzlich deaktiviert werden (false), um unerwartete Datums-Interpretationen zu verhindern. Ein aktivierter Modus kann dazu führen, dass ungültige Daten stillschweigend akzeptiert und falsch interpretiert werden, was zu logischen Fehlern in der Anwendung führt.
Alternativ zur prozeduralen Funktion kann die objektorientierte Variante IntlDateFormatter::setLenient() verwendet werden. Beide Methoden sind funktional identisch.