Start · Sprachen · PHP · Referenz · numfmt_get_text_attribute

numfmt_get_text_attribute

Funktion

Liest ein Text-Attribut eines <code>NumberFormatter</code>-Objekts aus, z. B. Positiv-/Negativ-Präfix oder -Suffix.

seit PHP 5.3.0 Kategorie: string

Signatur

numfmt_get_text_attribute(NumberFormatter $formatter, int $attribute): string|false

Beschreibung

numfmt_get_text_attribute() ist die prozedurale Variante von NumberFormatter::getTextAttribute() und gibt den Wert eines bestimmten Text-Attributs des übergebenen Formatters zurück. Text-Attribute steuern, wie Zahlen textlich eingerahmt werden – etwa welches Zeichen oder welcher String vor einer positiven Zahl (NumberFormatter::POSITIVE_PREFIX) oder nach einer negativen Zahl (NumberFormatter::NEGATIVE_SUFFIX) erscheint.

Im Gegensatz zu numerischen Attributen (die mit numfmt_get_attribute() abgerufen werden) handelt es sich bei Text-Attributen um Zeichenketten. Typische Anwendungsfälle sind die Anpassung und Inspektion von Währungs- oder Buchhaltungsformaten, bei denen negative Zahlen z. B. in Klammern eingeschlossen oder mit individuellen Symbolen versehen werden sollen.

Die verfügbaren Text-Attribut-Konstanten sind unter anderem: NumberFormatter::POSITIVE_PREFIX, NumberFormatter::POSITIVE_SUFFIX, NumberFormatter::NEGATIVE_PREFIX, NumberFormatter::NEGATIVE_SUFFIX, NumberFormatter::PADDING_CHARACTER, NumberFormatter::CURRENCY_CODE und NumberFormatter::DEFAULT_RULESET.

Die Funktion setzt die intl-Erweiterung voraus. Bei Fehler gibt sie false zurück; der Fehlercode lässt sich anschließend mit numfmt_get_error_code() auslesen.

Parameter

Name Typ Default Beschreibung
$formatter Pflicht NumberFormatter Das NumberFormatter-Objekt, dessen Text-Attribut ausgelesen werden soll.
$attribute Pflicht int Eine der NumberFormatter-Konstanten für Text-Attribute, z. B. NumberFormatter::POSITIVE_PREFIX, NumberFormatter::NEGATIVE_SUFFIX oder NumberFormatter::CURRENCY_CODE.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den Wert des angeforderten Text-Attributs als string zurück. Im Fehlerfall (z. B. ungültiges Attribut) wird false zurückgegeben.

Beispiele

Positiv- und Negativ-Präfix eines Dezimalformatters auslesen

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

$posPräfix = numfmt_get_text_attribute($fmt, NumberFormatter::POSITIVE_PREFIX);
$negPräfix = numfmt_get_text_attribute($fmt, NumberFormatter::NEGATIVE_PREFIX);

echo 'Positiv-Präfix: "' . $posPräfix . '"' . PHP_EOL;
echo 'Negativ-Präfix: "' . $negPräfix . '"' . PHP_EOL;
Positiv-Präfix: "" Negativ-Präfix: "-"

Währungscode eines Währungsformatters ermitteln

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

$währungscode = numfmt_get_text_attribute($fmt, NumberFormatter::CURRENCY_CODE);

echo 'Währungscode: ' . $währungscode . PHP_EOL;

// Ausgabe einer formatierten Zahl zur Kontrolle
echo numfmt_format_currency($fmt, 1234.56, $währungscode) . PHP_EOL;
Währungscode: EUR 1.234,56 €

Fehlerbehandlung bei ungültigem Attribut

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

// Ein numerisches Attribut (kein Text-Attribut) wird übergeben
$ergebnis = numfmt_get_text_attribute($fmt, NumberFormatter::MAX_INTEGER_DIGITS);

if ($ergebnis === false) {
    echo 'Fehler: ' . numfmt_get_error_message($fmt) . PHP_EOL;
    echo 'Fehlercode: ' . numfmt_get_error_code($fmt) . PHP_EOL;
} else {
    echo 'Wert: ' . $ergebnis . PHP_EOL;
}

// Wichtig · Fallstricke

Die Funktion ist die prozedurale Entsprechung zur OOP-Methode NumberFormatter::getTextAttribute(). Beide sind funktional identisch – die Wahl hängt vom bevorzugten Programmierstil ab.

Achtung: Nicht alle Attribute sind für jeden Formatter-Typ gültig. Das Attribut NumberFormatter::DEFAULT_RULESET ist beispielsweise nur für regelbasierte Formatter (z. B. NumberFormatter::SPELLOUT) verfügbar. Bei inkompatiblen Kombinationen wird false zurückgegeben.

Die intl-Erweiterung muss aktiviert sein (extension=intl in der php.ini). Die zugrundeliegenden Formatierungsregeln stammen aus der ICU-Bibliothek, deren Version das Verhalten beeinflussen kann.