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