Start · Sprachen · PHP · Referenz · numfmt_get_error_code

numfmt_get_error_code

Funktion

Liefert den letzten Fehlercode des <code>NumberFormatter</code>-Objekts nach einer Operation.

seit PHP 5.3.0 Kategorie: string

Signatur

numfmt_get_error_code(NumberFormatter $formatter): int

Beschreibung

numfmt_get_error_code() ist die prozedurale Variante der Methode NumberFormatter::getErrorCode(). Sie gibt den internen Fehlercode zurück, der von der letzten Formatter-Operation gesetzt wurde. Dies ist nützlich, um nach dem Formatieren oder Parsen von Zahlen zu prüfen, ob ein Fehler aufgetreten ist.

Die Fehlercodes entsprechen den ICU-Fehlercodes (International Components for Unicode). Kein Fehler wird durch U_ZERO_ERROR (Wert 0) signalisiert. Über die Konstanten der Klasse NumberFormatter und die intl-Extension können diese Codes interpretiert werden.

Diese Funktion ist besonders hilfreich, wenn numfmt_parse() oder numfmt_format() unerwartete Ergebnisse oder false zurückgeben und man den genauen Fehlergrund ermitteln möchte. In Kombination mit numfmt_get_error_message() erhält man auch eine lesbare Fehlermeldung.

Parameter

Name Typ Default Beschreibung
$formatter Pflicht NumberFormatter Das NumberFormatter-Objekt, dessen letzter Fehlercode abgefragt werden soll.

Rückgabewert

Typ
int
Beschreibung
Gibt den Fehlercode der letzten Operation zurück. Bei Erfolg ist der Wert 0 (U_ZERO_ERROR). Bei einem Fehler wird ein positiver ICU-Fehlercode zurückgegeben.

Beispiele

Fehlercode nach einem ungültigen Parse-Vorgang prüfen

<?php
$fmt = numfmt_create('de_DE', NumberFormatter::DECIMAL);

$result = numfmt_parse($fmt, 'kein_nummer');

if ($result === false) {
    $errorCode = numfmt_get_error_code($fmt);
    $errorMsg  = numfmt_get_error_message($fmt);
    echo "Parse fehlgeschlagen.\n";
    echo "Fehlercode: " . $errorCode . "\n";
    echo "Fehlermeldung: " . $errorMsg . "\n";
} else {
    echo "Ergebnis: " . $result . "\n";
}
Parse fehlgeschlagen. Fehlercode: 9 Fehlermeldung: Number cannot be parsed: U_PARSE_ERROR

Erfolgreiche Operation — Fehlercode ist 0

<?php
$fmt = numfmt_create('de_DE', NumberFormatter::DECIMAL);

$result = numfmt_parse($fmt, '1.234,56');

$errorCode = numfmt_get_error_code($fmt);

if ($errorCode === 0) {
    echo "Kein Fehler aufgetreten.\n";
    echo "Ergebnis: " . $result . "\n";
} else {
    echo "Fehlercode: " . $errorCode . "\n";
}
Kein Fehler aufgetreten. Ergebnis: 1234.56

// Wichtig · Fallstricke

Achtung: Der Fehlercode wird bei jeder Operation neu gesetzt. Es empfiehlt sich daher, numfmt_get_error_code() unmittelbar nach der zu prüfenden Operation aufzurufen, bevor eine weitere Formatter-Operation den Code überschreibt.

Die intl-Extension muss in PHP aktiviert sein (ab PHP 5.3). Fehlt die Extension, steht die Funktion nicht zur Verfügung. Die Fehlercodes der ICU-Bibliothek sind in der ICU-Dokumentation beschrieben.