Start · Sprachen · PHP · Referenz · numfmt_set_symbol

numfmt_set_symbol

Funktion

Setzt ein Symbol (z. B. Dezimaltrennzeichen oder Tausendertrennzeichen) in einem <code>NumberFormatter</code>-Objekt auf einen benutzerdefinierten Wert.

seit PHP 5.3.0 Kategorie: string

Signatur

numfmt_set_symbol(NumberFormatter $formatter, int $symbol, string $value): bool

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

Typ
bool
Beschreibung
Gibt 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;
1,234.56 1.234,56

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;
1.234,56 € 1.234,56 Eu

// 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.