Start · Sprachen · PHP · Referenz · msgfmt_get_pattern

msgfmt_get_pattern

Funktion

Liefert das aktuell vom <code>MessageFormatter</code>-Objekt verwendete Formatierungsmuster als Zeichenkette zurück.

seit PHP 5.3.0 Kategorie: string

Signatur

msgfmt_get_pattern(MessageFormatter $formatter): string|false

Beschreibung

msgfmt_get_pattern() ist die prozedurale Variante der Methode MessageFormatter::getPattern() aus der ICU-Erweiterung intl. Die Funktion gibt das Formatierungsmuster zurück, das der übergebene MessageFormatter aktuell verwendet, um Nachrichten zusammenzusetzen.

Das zurückgegebene Muster entspricht dem ICU-MessageFormat-Syntax, welche Platzhalter wie {0}, {1, number} oder {2, date, short} unterstützt. Das Muster kann nach der Erstellung eines Formatters über msgfmt_set_pattern() auch nachträglich geändert werden – msgfmt_get_pattern() erlaubt es, das aktuell aktive Muster auszulesen.

Typische Anwendungsfälle sind Debugging, Logging oder das dynamische Weiterverarbeiten von Mustern, z. B. um sie in einer Datenbank zu speichern oder zur Laufzeit zu inspizieren.

  • Rückgabe false bei einem internen Fehler des Formatters.
  • Die Funktion ist Teil der intl-Extension und erfordert die ICU-Bibliothek.

Parameter

Name Typ Default Beschreibung
$formatter Pflicht MessageFormatter Ein MessageFormatter-Objekt, das zuvor mit msgfmt_create() oder new MessageFormatter() erzeugt wurde.

Rückgabewert

Typ
string|false
Beschreibung
Gibt das ICU-Formatierungsmuster des Formatters als Zeichenkette zurück. Bei einem Fehler wird false zurückgegeben.

Beispiele

Muster eines MessageFormatters auslesen

<?php
$pattern = 'Hallo, {0}! Du hast {1, number} neue Nachrichten.';
$formatter = msgfmt_create('de_DE', $pattern);

$currentPattern = msgfmt_get_pattern($formatter);
echo $currentPattern;
Hallo, {0}! Du hast {1, number} neue Nachrichten.

Muster nach Änderung mit msgfmt_set_pattern auslesen

<?php
$formatter = msgfmt_create('de_DE', '{0} hat {1, number} Punkte.');

// Muster nachträglich ändern
msgfmt_set_pattern($formatter, '{0} hat {1, number, integer} Punkte erreicht.');

// Aktuelles Muster ausgeben
$pattern = msgfmt_get_pattern($formatter);
echo "Aktuelles Muster: " . $pattern . PHP_EOL;

// Formatter mit neuem Muster verwenden
$result = msgfmt_format($formatter, ['Maria', 4200]);
echo $result;
Aktuelles Muster: {0} hat {1, number, integer} Punkte erreicht. Maria hat 4.200 Punkte erreicht.

// Wichtig · Fallstricke

Die Funktion ist die prozedurale Entsprechung zur OOP-Methode MessageFormatter::getPattern(). Beide Varianten sind funktional identisch. In modernem Code wird die OOP-Schreibweise bevorzugt.

Die intl-Extension muss aktiviert sein (extension=intl in der php.ini). Fehlt die Extension, wird ein fataler Fehler ausgelöst. Der zurückgegebene Muster-String kann je nach ICU-Version leicht normalisiert sein und muss nicht exakt dem ursprünglich übergebenen Muster entsprechen.