Signatur
Beschreibung
numfmt_get_pattern() (bzw. die objektorientierte Entsprechung NumberFormatter::getPattern()) liefert das ICU-Dezimalformatmuster, das dem übergebenen Formatter zugrunde liegt. Dieses Muster beschreibt, wie Zahlen formatiert werden – etwa Dezimaltrennzeichen, Gruppentrennzeichen, Präfixe und Suffixe sowie die Anzahl der Nachkommastellen.
Das zurückgegebene Muster folgt der ICU-Mustersynatx und kann z. B. wie #,##0.### aussehen. Es lässt sich mit numfmt_set_pattern() verändern und anschließend wieder abfragen, um die aktuelle Konfiguration des Formatters zu inspizieren.
Typische Anwendungsfälle sind das Debuggen von Formatter-Konfigurationen, das Speichern und Wiederherstellen von Formatter-Mustern sowie die Übergabe von Mustern an andere Systeme, die ICU-Musternotation verstehen.
- Funktioniert nur bei regelbasierten Formattern wie
DECIMAL,CURRENCY,PERCENTusw. - Bei manchen Formatter-Typen (z. B.
SPELLOUT) ist kein Muster vorhanden; hier gibt die Funktionfalsezurück.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $formatter Pflicht | NumberFormatter | Ein NumberFormatter-Objekt, das zuvor mit numfmt_create() oder new NumberFormatter() erstellt wurde. |
Rückgabewert
string zurück. Im Fehlerfall (z. B. bei Formatter-Typen ohne Muster) wird false zurückgegeben. Der Fehler kann anschließend mit numfmt_get_error_code() und numfmt_get_error_message() abgefragt werden.Beispiele
Muster eines Standard-Dezimal-Formatters auslesen
<?php
$fmt = numfmt_create('de_DE', NumberFormatter::DECIMAL);
$pattern = numfmt_get_pattern($fmt);
echo $pattern;
Muster setzen und anschließend prüfen (OOP-Stil)
<?php
$fmt = new NumberFormatter('en_US', NumberFormatter::DECIMAL);
// Ursprüngliches Muster anzeigen
echo 'Vorher: ' . $fmt->getPattern() . PHP_EOL;
// Benutzerdefiniertes Muster setzen: 2 Nachkommastellen, Tausendertrennzeichen
$fmt->setPattern('#,##0.00');
// Geändertes Muster auslesen
echo 'Nachher: ' . $fmt->getPattern() . PHP_EOL;
// Formatierung testen
echo $fmt->format(1234567.891) . PHP_EOL;
Fehlerfall bei regelbasiertem SPELLOUT-Formatter
<?php
$fmt = numfmt_create('de_DE', NumberFormatter::SPELLOUT);
$pattern = numfmt_get_pattern($fmt);
if ($pattern === false) {
echo 'Kein Muster verfügbar. Fehler: ' . numfmt_get_error_message($fmt) . PHP_EOL;
} else {
echo $pattern . PHP_EOL;
}
// Wichtig · Fallstricke
Formatter-Typ beachten: Nicht alle Formatter-Typen unterstützen Muster. SPELLOUT und ORDINAL verwenden regelbasierte Algorithmen ohne ICU-Dezimalmuster. Der Rückgabewert false ist daher immer explizit zu prüfen.
ICU-Version: Das genaue Standardmuster für eine Locale kann je nach installierten ICU-Daten variieren. Dasselbe PHP-Skript kann auf verschiedenen Systemen unterschiedliche Muster liefern, wenn unterschiedliche ICU-Versionen installiert sind.