Start · Sprachen · PHP · Referenz · numfmt_get_symbol

numfmt_get_symbol

Funktion

Liefert den Symbolwert eines bestimmten Symbols aus einem <code>NumberFormatter</code>-Objekt.

seit PHP 5.3.0 Kategorie: string

Signatur

numfmt_get_symbol(NumberFormatter $formatter, int $symbol): string|false

Beschreibung

numfmt_get_symbol() ist die prozedurale Variante von NumberFormatter::getSymbol() und gibt den aktuell gesetzten Symbolwert für ein bestimmtes Formatierungssymbol zurück. Symbole sind sprachspezifische Zeichen wie Dezimaltrennzeichen, Tausendertrennzeichen, Währungszeichen oder Vorzeichen, die das Erscheinungsbild einer formatierten Zahl beeinflussen.

Die Funktion ist nützlich, wenn Sie prüfen wollen, welche Zeichen ein NumberFormatter für ein bestimmtes Gebietsschema (Locale) intern verwendet – etwa um Benutzereingaben korrekt zu parsen oder Ausgaben zu validieren.

Die verfügbaren Symbolkonstanten sind in der Klasse NumberFormatter definiert, z. B. NumberFormatter::DECIMAL_SEPARATOR_SYMBOL, NumberFormatter::GROUPING_SEPARATOR_SYMBOL oder NumberFormatter::CURRENCY_SYMBOL. Die genaue Liste hängt vom Formatter-Typ ab; nicht jedes Symbol ist für jeden Formatter-Typ sinnvoll.

Zur Änderung eines Symbols dient die komplementäre Funktion numfmt_set_symbol().

Parameter

Name Typ Default Beschreibung
$formatter Pflicht NumberFormatter Das NumberFormatter-Objekt, das zuvor mit numfmt_create() oder new NumberFormatter() erzeugt wurde.
$symbol Pflicht int Eine der NumberFormatter-Symbolkonstanten, z. B. NumberFormatter::DECIMAL_SEPARATOR_SYMBOL oder NumberFormatter::GROUPING_SEPARATOR_SYMBOL.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den Symbolwert als Zeichenkette zurück. Im Fehlerfall (ungültige Konstante oder nicht unterstütztes Symbol für diesen Formatter-Typ) wird false zurückgegeben.

Beispiele

Dezimal- und Tausendertrennzeichen für verschiedene Locales ausgeben

<?php
$fmtDe = numfmt_create('de_DE', NumberFormatter::DECIMAL);
$fmtEn = numfmt_create('en_US', NumberFormatter::DECIMAL);

$decDe = numfmt_get_symbol($fmtDe, NumberFormatter::DECIMAL_SEPARATOR_SYMBOL);
$grpDe = numfmt_get_symbol($fmtDe, NumberFormatter::GROUPING_SEPARATOR_SYMBOL);

$decEn = numfmt_get_symbol($fmtEn, NumberFormatter::DECIMAL_SEPARATOR_SYMBOL);
$grpEn = numfmt_get_symbol($fmtEn, NumberFormatter::GROUPING_SEPARATOR_SYMBOL);

echo "de_DE Dezimaltrennzeichen : '{$decDe}'\n";
echo "de_DE Tausendertrennzeichen: '{$grpDe}'\n";
echo "en_US Dezimaltrennzeichen : '{$decEn}'\n";
echo "en_US Tausendertrennzeichen: '{$grpEn}'\n";
de_DE Dezimaltrennzeichen : ',' de_DE Tausendertrennzeichen: '.' en_US Dezimaltrennzeichen : '.' en_US Tausendertrennzeichen: ','

Währungssymbol eines Formatters abfragen

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

$currencySymbol = numfmt_get_symbol($fmt, NumberFormatter::CURRENCY_SYMBOL);
$intlSymbol     = numfmt_get_symbol($fmt, NumberFormatter::INTL_CURRENCY_SYMBOL);

echo "Währungssymbol      : {$currencySymbol}\n";
echo "Internationales Kürzel: {$intlSymbol}\n";
Währungssymbol : € Internationales Kürzel: EUR

// Wichtig · Fallstricke

Die Funktion erfordert die PECL-Erweiterung intl (ab PHP 5.3 im Kern enthalten, muss aber ggf. in der php.ini aktiviert werden: extension=intl).

Nicht alle Symbolkonstanten sind für jeden Formatter-Typ gültig. So liefert NumberFormatter::CURRENCY_SYMBOL für einen reinen NumberFormatter::DECIMAL-Formatter möglicherweise false oder ein leeres Ergebnis. Prüfen Sie den Rückgabewert daher stets auf false.

Die OO-Schreibweise lautet: $formatter->getSymbol(NumberFormatter::DECIMAL_SEPARATOR_SYMBOL).