2011-02-09 78 views
6

Tôi đã đặt ngôn ngữ bằng cách sử dụng hàm setlocale() để nói "en_".php cách lấy dấu thập phân/nghìn dấu tách hiện tại cho một ngôn ngữ cụ thể

bây giờ tôi đang cố gắng để định dạng tiền tệ mà không có một dấu phân cách ngàn như thế này:

$ tệ = number_format ('' $ value, 2, , '');

hoạt động, nhưng đôi khi tôi có các đơn vị tiền tệ khác và tôi muốn number_format sử dụng dấu phân tách thập phân chính xác theo ngôn ngữ sử dụng.

Có cách nào để nhận dấu tách thập phân hiện tại bằng cách nào đó, dựa trên ngôn ngữ đã được đặt không?

+0

thử ['string money_format (chuỗi $ format, float $ number)'] (http://php.net/money_format). – Jacco

Trả lời

9

localeconv() nên làm điều đó. Từ hướng dẫn sử dụng:

Trả về mảng kết hợp chứa số địa phương và thông tin định dạng tiền tệ.

Here is a list chuỗi ngôn ngữ được công nhận bởi setlocale() trên Windows.

+0

cảm ơn, không may là trả về các phần tử mảng trống: [thousand_sep] => [int_curr_symbol] => [currency_symbol] => [mon_decimal_point] => – Jorre

+0

nó có liên quan đến cửa sổ. Tất cả hoạt động tốt trên mac/linux của tôi, nhưng tôi đã tìm kiếm một giải pháp để có được tiền tệ được định dạng consitently trên cửa sổ dev máy của chúng tôi như welL. Oh well. Cảm ơn câu trả lời! – Jorre

0

Sean Bright là đúng, sử dụng chức năng localeconv(). Bạn có chắc chắn rằng bạn thiết lập một miền địa phương chính xác cho hệ điều hành của bạn, bởi vì hệ điều hành dựa trên Unix sử dụng "en_US.UTF-8" như ký hiệu, trong khi Windows sử dụng "en-US".

+1

Nếu bạn có hệ điều hành khác trên máy tính của nhà phát triển và máy chủ sản phẩm, bạn có thể gọi 'setlocale' như sau: 'setlocale (LC_ALL,' en_US.utf8 ',' en-US ')'. Hàm sẽ sử dụng ngôn ngữ được tìm thấy đầu tiên. – WASD42

+0

cảm ơn, nghe có vẻ như một giải pháp, nhưng vẫn còn, mảng vẫn trống trên cửa sổ ngay cả với các địa phương thay thế – Jorre

+0

Hãy thử sử dụng ngôn ngữ từ [hướng dẫn sử dụng MSDN] (http://msdn.microsoft.com/en-us/library/39cwe7zf % 28vs.71% 29.aspx). 'setlocale (LC_ALL, 'en_US.utf8', 'american')' hoạt động hoàn hảo trên cả XP và Vista của tôi, trả về mảng đầy với tên tiền tệ và ký hiệu và dấu tách số. – WASD42

1

Nó không phải là tốt nhất, nhưng nó hoạt động:

$locale_info = localeconv(); 
echo 'decimal_point=', $locale_info['decimal_point'], '<br/>/n'; 

localeconv() trả về một mảng kết hợp với các lĩnh vực khác ngoài nhân vật dấu thập phân.

Các vấn đề liên quan