Heim >Backend-Entwicklung >PHP-Tutorial >Lokalisierung von Daten, Währung und Zahlen mit PHP-Intl
Dieses Tutorial baut auf der vorherigen Einführung in die PHP INTL -Erweiterung auf und konzentriert sich auf die Lokalisierung komplexer Daten wie Zahlen, Daten und Währungen. Lassen Sie uns eintauchen!
Schlüsselkonzepte:
NumberFormatter
verarbeitet die Anzahl der Lokalisierung, die Variationen in Dezimalabschlüssen und Formatierungsstile in verschiedenen Orten berücksichtigt. NumberFormatter
erreicht, indem der Währungscode angegeben und die formatCurrency
-Methode verwendet wird. IntlCalendar
) für die Manipulation und den Vergleich von Datum, der Funktionalitäten anbietet, die den Volksdatum-/Zeitbibliotheken ähneln. Dezimallokalisierung:
Inkonsistenzen in Dezimalabscheidern in den Regionen sind eine häufigste Herausforderung. Die NumberFormatter
Klasse löst elegant Folgendes:
<code class="language-php">$numberFormatter = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL ); var_dump( $numberFormatter->format(123456789) ); // Output: string(11) "123.456.789" $numberFormatter = new NumberFormatter( 'en_US', NumberFormatter::DECIMAL ); var_dump( $numberFormatter->format(123456789) ); // Output: string(11) "123,456,789" $numberFormatter = new NumberFormatter( 'ar', NumberFormatter::DECIMAL ); var_dump( $numberFormatter->format(123456789) ); // Output: string(22) "١٢٣٬٤٥٦٬٧٨٩" $numberFormatter = new NumberFormatter( 'bn', NumberFormatter::DECIMAL ); var_dump( $numberFormatter->format(123456789) ); // Output: string(30) "১২,৩৪,৫৬,৭৮৯"</code>
Der Gebietsschemascode (z. B. 'de_de', 'en_us') diktiert den Formatierungsstil. Verschiedene Formatierungsstile (Dezimal, Währung, Dauer usw.) sind verfügbar.
Formatierungsstile und -attribute:
Wir können die Zahlenformatierung mit Attributen anpassen:
<code class="language-php">$nf = new NumberFormatter( 'en_US', NumberFormatter::DECIMAL ); $nf->setAttribute(NumberFormatter::FRACTION_DIGITS, 2); var_dump( $nf->format(1234.56789) ); // Output: string(8) "1,234.57" var_dump( $nf->format(1234) ); // Output: string(8) "1,234.00"</code>
Rundungsverhalten kann kontrolliert werden:
<code class="language-php">$nf = new NumberFormatter( 'en_US', NumberFormatter::DECIMAL ); $nf->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 2); $nf->setAttribute(NumberFormatter::ROUNDING_MODE, NumberFormatter::ROUND_CEILING); var_dump($nf->format(1234.5678) ); // Output: string(8) "1,234.57" $nf->setAttribute(NumberFormatter::ROUNDING_MODE, NumberFormatter::ROUND_DOWN); var_dump($nf->format(1234.5678) ); // Output: string(8) "1,234.56"</code>
SPELLOUT
und DURATION
, die zuvor eingeführt wurden, gelten auch hier. Die analysierten Zeichenfolgen in Zahlen werden über die parse
-Methode unterstützt.
Währungslokalisierung:
Formatierungsnummern als Währungen ist einfach:
<code class="language-php">$nf = new NumberFormatter( 'en_US', NumberFormatter::CURRENCY ); var_dump( $nf->formatCurrency(1234.56789, "USD" ) ); // Output: string(9) ",234.57"</code>
Die getSymbol
-Methode vereinfacht das Abrufen des Währungssymbols:
<code class="language-php">$nf = new NumberFormatter( 'en_US', NumberFormatter::CURRENCY ); var_dump( $nf->formatCurrency(1234.56789, $nf->getSymbol(NumberFormatter::INTL_CURRENCY_SYMBOL)) ); // Output: string(9) ",234.57" $nf = new NumberFormatter( 'fr_FR', NumberFormatter::CURRENCY ); var_dump( $nf->formatCurrency(1234.56789, $nf->getSymbol(NumberFormatter::INTL_CURRENCY_SYMBOL)) ); // Output: string(14) "1 234,57 €"</code>
Zeitzonen und Kalender:
IntlTimeZone
verwaltet Zeitzonen und spiegelt die Funktionen von DateTimeZone
wider. IntlCalendar
bietet eine reiche API für Kalenderoperationen:
<code class="language-php">$calendar = IntlCalendar::createInstance(); var_dump($calendar->getTimeZone()->getId()); // Output: Time zone ID (e.g., "UTC") $calendar = IntlCalendar::fromDateTime(new DateTime()); // Create from DateTime object // Comparisons $calendar1 = IntlCalendar::fromDateTime( DateTime::createFromFormat('j-M-Y', '11-Apr-2016') ); $calendar2 = IntlCalendar::createInstance(); $diff = $calendar1->fieldDifference($calendar2->getTime(), IntlCalendar::FIELD_MILLISECOND); // ... (comparison and date navigation examples as before)</code>
Datumsnavigation ist intuitiv:
<code class="language-php">$calendar = IntlCalendar::createInstance(); $calendar->add(IntlCalendar::FIELD_MONTH, 1); // Add a month $calendar->add(IntlCalendar::FIELD_DAY_OF_WEEK, 1); // Add a day of the week // ...</code>
Schlussfolgerung:
Die von der Intensivstation betriebene PHP INTL -Erweiterung bietet eine leistungsstarke und umfassende Lösung für die Internationalisierung Ihrer PHP -Anwendungen. Diese zweiteilige Serie hat die Lokalisierung von Nachrichten und die jetzt komplexe Datenlokalisierung behandelt. Zukünftige Artikel werden zusätzliche Funktionen innerhalb der INTL -Erweiterung untersuchen.
Das obige ist der detaillierte Inhalt vonLokalisierung von Daten, Währung und Zahlen mit PHP-Intl. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!