Start · Sprachen · PHP · Referenz · numfmt_get_pattern

numfmt_get_pattern

Funktion

Gibt das aktuell im <code>NumberFormatter</code>-Objekt verwendete Formatierungsmuster als ICU-Musterstring zurück.

seit PHP 5.3.0 Kategorie: string

Signatur

numfmt_get_pattern(NumberFormatter $formatter): string|false

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, PERCENT usw.
  • Bei manchen Formatter-Typen (z. B. SPELLOUT) ist kein Muster vorhanden; hier gibt die Funktion false zurück.

Parameter

Name Typ Default Beschreibung
$formatter Pflicht NumberFormatter Ein NumberFormatter-Objekt, das zuvor mit numfmt_create() oder new NumberFormatter() erstellt wurde.

Rückgabewert

Typ
string|false
Beschreibung
Gibt das ICU-Formatierungsmuster als 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;
#,##0.###

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;
Vorher: #,##0.### Nachher: #,##0.00 1,234,567.89

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;
}
Kein Muster verfügbar. Fehler: U_UNSUPPORTED_ERROR

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