Signatur
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
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";
}
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";
}
// 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.