Hướng dẫn php detect currency - php phát hiện tiền tệ

Hãy bắt đầu với đoạn mã đơn giản để định dạng tiền với

$formatter->getSymbol[NumberFormatter::CURRENCY_SYMBOL];
3:

$formatter = new NumberFormatter['en_US', NumberFormatter::CURRENCY];
echo $formatter->formatCurrency[123456789, 'JPY'];

Bản in này:

$formatter->getSymbol[NumberFormatter::CURRENCY_SYMBOL];
4.

Điều này là ok nếu bạn muốn định dạng tiền.

Nhưng những gì tôi muốn làm là lấy ký hiệu tiền tệ [ví dụ: ¥] cho mã ISO 4217 nhất định [ví dụ: JPY].

Dự đoán đầu tiên của tôi là thử sử dụng:

$formatter->getSymbol[NumberFormatter::CURRENCY_SYMBOL];

Nhưng điều đó mang lại biểu tượng tiền tệ cho locale được đưa ra trong Constructor [en_us], $ trong trường hợp của tôi.

Có cách nào để có được ký hiệu tiền tệ bằng mã ISO 4217 trong PHP không?

Hỏi ngày 16 tháng 12 năm 2012 lúc 0:35Dec 16, 2012 at 0:35

Umpirskyumpirskyumpirsky

9.75213 huy hiệu vàng71 Huy hiệu bạc94 Huy hiệu đồng13 gold badges71 silver badges94 bronze badges

6

Trước hết, không có bảng biểu tượng tiền tệ toàn cầu quốc tế, mà bất kỳ ai trên hành tinh đều có thể đọc và hiểu.

Ở mỗi khu vực / quốc gia, các biểu tượng tiền tệ sẽ khác nhau, đó là lý do tại sao bạn phải xác định chúng dựa trên người đang đọc, sử dụng trình duyệt / local người dùng.

Cách chính xác là như bạn đoán, sử dụng NumberFormatter :: Currency_Symbol, nhưng trước tiên bạn phải đặt locale thích hợp như [email & nbsp; được bảo vệ] = jpy:[email protected]=JPY:

$locale='en-US'; //browser or user locale
$currency='JPY';
$fmt = new NumberFormatter[ $locale."@currency=$currency", NumberFormatter::CURRENCY ];
$symbol = $fmt->getSymbol[NumberFormatter::CURRENCY_SYMBOL];
header["Content-Type: text/html; charset=UTF-8;"];
echo $symbol;

Bằng cách này, biểu tượng sẽ có thể hiểu được bởi người dùng.

Ví dụ: $ ký hiệu sẽ là:

  • Đô la Canada [CAD]: CA $ ở Hoa Kỳ, CAD ở Romania, $ CA ở IranCA$ in USA, CAD in Romania , $CA in Iran
  • Iran Rial [IRR]: IRR ở Mỹ, trong khi ở Iran sẽ là ﷼IRR in USA, while in Iran will be

Đã trả lời ngày 4 tháng 5 năm 2015 lúc 9:30May 4, 2015 at 9:30

Idragosalexidragosalexidragosalex

1.4751 Huy hiệu vàng12 Huy hiệu bạc8 Huy hiệu đồng1 gold badge12 silver badges8 bronze badges

1

Tôi đã đạt được điều này bằng cách sử dụng //github.com/symfony/intl:

Symfony\Component\Intl\Intl::getCurrencyBundle[]->getCurrencySymbol['EUR']

trả lại

'€'.

Phiên bản Symfony> 4.3

Nó đáng để chỉ ra cho SF4.3 trở lên, điều này đã bị phản đối:

/**
 * Returns the bundle containing currency information.
 *
 * @return CurrencyBundleInterface The currency resource bundle
 *
 * @deprecated since Symfony 4.3, to be removed in 5.0. Use {@see Currencies} instead.
 */
public static function getCurrencyBundle[]: CurrencyBundleInterface
{

Vì vậy, thay vào đó bạn có thể làm:

use Symfony\Component\Intl\Currencies;
echo Currencies::getSymbol['AUD']; 

Flumingo

5132 Huy hiệu vàng7 Huy hiệu bạc24 Huy hiệu đồng2 gold badges7 silver badges24 bronze badges

Đã trả lời ngày 5 tháng 6 năm 2013 lúc 14:10Jun 5, 2013 at 14:10

Umpirskyumpirskyumpirsky

9.75213 huy hiệu vàng71 Huy hiệu bạc94 Huy hiệu đồng13 gold badges71 silver badges94 bronze badges

4

Trước hết, không có bảng biểu tượng tiền tệ toàn cầu quốc tế, mà bất kỳ ai trên hành tinh đều có thể đọc và hiểu.

function get_currency_symbol[$string]
{
    $symbol = '';
    $length = mb_strlen[$string, 'utf-8'];
    for [$i = 0; $i < $length; $i++]
    {
        $char = mb_substr[$string, $i, 1, 'utf-8'];
        if [!ctype_digit[$char] && !ctype_punct[$char]]
            $symbol .= $char;
    }
    return $symbol;
}

$format = new NumberFormatter['en_US', NumberFormatter::CURRENCY];
$string = $format->formatCurrency[123456789, 'JPY'];
echo get_currency_symbol[$string];

Ở mỗi khu vực / quốc gia, các biểu tượng tiền tệ sẽ khác nhau, đó là lý do tại sao bạn phải xác định chúng dựa trên người đang đọc, sử dụng trình duyệt / local người dùng.Dec 16, 2012 at 1:16

Cách chính xác là như bạn đoán, sử dụng NumberFormatter :: Currency_Symbol, nhưng trước tiên bạn phải đặt locale thích hợp như [email & nbsp; được bảo vệ] = jpy:cryptic ツ

Bằng cách này, biểu tượng sẽ có thể hiểu được bởi người dùng.9 gold badges53 silver badges80 bronze badges

4

Ví dụ: $ ký hiệu sẽ là:

Đô la Canada [CAD]: CA $ ở Hoa Kỳ, CAD ở Romania, $ CA ở IranMay 23, 2016 at 20:55

0

Iran Rial [IRR]: IRR ở Mỹ, trong khi ở Iran sẽ là ﷼Symfony Intl Component

Đã trả lời ngày 4 tháng 5 năm 2015 lúc 9:30

Idragosalexidragosalex

use Symfony\Component\Intl\Currencies;
\Locale::setDefault['en'];
$symbol = Currencies::getSymbol['INR']; // => '₹'
echo $symbol;

1.4751 Huy hiệu vàng12 Huy hiệu bạc8 Huy hiệu đồngApr 18, 2020 at 22:09

Tôi đã đạt được điều này bằng cách sử dụng //github.com/symfony/intl:aphoe

trả lại25 silver badges29 bronze badges

Phiên bản Symfony> 4.3

preg_replace['#[a-z0-9.]*#i', '', $formatter->formatCurrency['0', $currency]]

Nó đáng để chỉ ra cho SF4.3 trở lên, điều này đã bị phản đối:

Vì vậy, thay vào đó bạn có thể làm:Mar 14, 2014 at 11:02

FlumingoBenubird

5132 Huy hiệu vàng7 Huy hiệu bạc24 Huy hiệu đồng26 gold badges87 silver badges136 bronze badges

$formatter->getSymbol[NumberFormatter::CURRENCY_SYMBOL];
0

Đã trả lời ngày 5 tháng 6 năm 2013 lúc 14:10

Vì các ký hiệu có thể là nhiều byte, tôi đã sử dụng các hàm mb _*[] để lấy chính xác tất cả các ký tự không đúng hạn và không có chữ số sẽ rời khỏi biểu tượng.

$formatter->getSymbol[NumberFormatter::CURRENCY_SYMBOL];
1

Đã trả lời ngày 16 tháng 12 năm 2012 lúc 1:16Mar 16, 2016 at 2:14

Cryptic ツ Cryptic ツ

$formatter->getSymbol[NumberFormatter::CURRENCY_SYMBOL];
2

15K9 Huy hiệu vàng53 Huy hiệu bạc80 Huy hiệu ĐồngFeb 7, 2013 at 7:57

0

Bài Viết Liên Quan

Chủ Đề