Rumah >pembangunan bahagian belakang >tutorial php >Tarikh, Mata Wang, dan Nombor Lokalisasi dengan PHP-INTL
Tutorial ini membina pengenalan sebelumnya kepada lanjutan PHP INTL, yang memberi tumpuan kepada penyetempatan data kompleks seperti nombor, tarikh, dan mata wang. Mari kita menyelam!
Konsep Utama:
NumberFormatter
pemformatan mata wang mudah dicapai dengan NumberFormatter
formatCurrency
Pelanjutan menyediakan API Kalendar Komprehensif (IntlCalendar
ketidakkonsistenan dalam pemisah perpuluhan di seluruh wilayah adalah cabaran yang sama. Kelas
dengan elegan menyelesaikan ini:
NumberFormatter
<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>
gaya format dan atribut:
kita boleh menyesuaikan pemformatan nombor menggunakan atribut:
tingkah laku pembulatan dapat dikawal:
<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>
<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>dan
gaya, diperkenalkan sebelum ini, juga memohon di sini. Parsing Strings Formats kembali ke nombor disokong melalui kaedah SPELLOUT
. DURATION
parse
nombor pemformatan sebagai mata wang adalah mudah:
kaedah
<code class="language-php">$nf = new NumberFormatter( 'en_US', NumberFormatter::CURRENCY ); var_dump( $nf->formatCurrency(1234.56789, "USD" ) ); // Output: string(9) ",234.57"</code>memudahkan pengambilan simbol mata wang:
getSymbol
<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>zon waktu dan kalendar:
Menguruskan zon waktu, mencerminkan fungsi
. IntlTimeZone
menyediakan API yang kaya untuk operasi kalendar: DateTimeZone
IntlCalendar
<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>
<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>Kesimpulan:
PHP INTL Extension, yang dikuasakan oleh ICU, menawarkan penyelesaian yang kuat dan komprehensif untuk mengantaraikan aplikasi PHP anda. Siri dua bahagian ini telah meliputi penyetempatan mesej dan kini penyetempatan data yang kompleks. Artikel masa depan akan meneroka fungsi tambahan dalam lanjutan INTL.
Atas ialah kandungan terperinci Tarikh, Mata Wang, dan Nombor Lokalisasi dengan PHP-INTL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!