Signatur
Beschreibung
numfmt_set_symbol ermöglicht es, einzelne Symbole eines NumberFormatter-Objekts anzupassen. Symbole sind die Zeichen oder Zeichenketten, die beim Formatieren von Zahlen verwendet werden – beispielsweise das Dezimaltrennzeichen (, oder .), das Tausendertrennzeichen, das Währungssymbol oder das Prozentzeichen.
Die Funktion wird als prozedurale Variante der Methode NumberFormatter::setSymbol() verwendet. Sie arbeitet direkt auf dem übergebenen NumberFormatter-Objekt und gibt true bei Erfolg zurück, andernfalls false.
Typische Anwendungsfälle sind die Lokalisierung von Zahlenformaten für Regionen, deren ICU-Locale-Daten nicht exakt den gewünschten Ausgaberegeln entsprechen, oder das manuelle Überschreiben von Symbolen für eine speziell angepasste Ausgabe. Die verfügbaren Symbolkonstanten (z. B. NumberFormatter::DECIMAL_SEPARATOR_SYMBOL) sind als Klassenkonstanten von NumberFormatter definiert.
Diese Funktion ist Teil der intl-Erweiterung (Internationalization Functions) und setzt voraus, dass die Erweiterung kompiliert oder als Modul geladen ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $formatter Pflicht | NumberFormatter | Das NumberFormatter-Objekt, dessen Symbol geändert werden soll. Wird typischerweise mit numfmt_create() erstellt. |
|
| $symbol Pflicht | int | Die Symbolkonstante, die gesetzt werden soll. Eine der NumberFormatter::*_SYMBOL-Konstanten, z. B. NumberFormatter::DECIMAL_SEPARATOR_SYMBOL oder NumberFormatter::GROUPING_SEPARATOR_SYMBOL. |
|
| $value Pflicht | string | Der neue Wert für das Symbol als Zeichenkette, z. B. ',' für ein Komma als Dezimaltrennzeichen. |
Rückgabewert
true zurück, wenn das Symbol erfolgreich gesetzt wurde, oder false bei einem Fehler (z. B. ungültige Symbolkonstante oder ungültiger Formatter).Beispiele
Dezimaltrennzeichen auf Komma ändern
<?php
$formatter = numfmt_create('en_US', NumberFormatter::DECIMAL);
// Standardausgabe
echo numfmt_format($formatter, 1234.56) . PHP_EOL;
// Dezimaltrennzeichen auf Komma und Tausendertrennzeichen auf Punkt ändern
numfmt_set_symbol($formatter, NumberFormatter::DECIMAL_SEPARATOR_SYMBOL, ',');
numfmt_set_symbol($formatter, NumberFormatter::GROUPING_SEPARATOR_SYMBOL, '.');
echo numfmt_format($formatter, 1234.56) . PHP_EOL;
Währungssymbol eines Formatters anpassen
<?php
$formatter = numfmt_create('de_DE', NumberFormatter::CURRENCY);
// Standardausgabe mit Euro-Symbol
echo numfmt_format_currency($formatter, 1234.56, 'EUR') . PHP_EOL;
// Währungssymbol auf eigene Darstellung ändern
numfmt_set_symbol($formatter, NumberFormatter::CURRENCY_SYMBOL, 'Eu');
echo numfmt_format_currency($formatter, 1234.56, 'EUR') . PHP_EOL;
// Wichtig · Fallstricke
Verfügbarkeit: Die Funktion setzt die intl-Erweiterung voraus (extension=intl in der php.ini). Ohne diese Erweiterung ist die Funktion nicht verfügbar.
OOP-Äquivalent: Diese prozedurale Funktion entspricht der Methode NumberFormatter::setSymbol(). Beide Varianten sind gleichwertig und bearbeiten dasselbe Formatter-Objekt.
Symbolkonstanten: Es existieren zahlreiche Symbolkonstanten, u. a. NumberFormatter::DECIMAL_SEPARATOR_SYMBOL, NumberFormatter::GROUPING_SEPARATOR_SYMBOL, NumberFormatter::PERCENT_SYMBOL, NumberFormatter::ZERO_DIGIT_SYMBOL und weitere. Eine vollständige Liste findet sich in der PHP-Dokumentation zu NumberFormatter.
Reihenfolge: Symbole müssen nach der Erstellung des Formatters gesetzt werden; das Ändern von Symbolen überschreibt die Standardwerte der Locale dauerhaft für die Laufzeit des Formatter-Objekts.