2011-02-09 3 views
6

"en_US"라고 말하기 위해 setlocale() 함수를 사용하여 로케일을 설정했습니다. php 주어진 로케일에 대한 현재 십진수/천 단위 구분 기호를 얻는 방법

는 지금은이 같은 1000 개 단위 구분없이 통화를 포맷하기 위해 노력하고있어 :

$ 통화 =로 number_format ('.'$ 값, 2, , '');

작동하지만 가끔 다른 통화가 있습니다. number_format에 사용 로케일에 따라 올바른 소수 구분 기호를 사용하고 싶습니다.

설정 한 로캘을 기준으로 어떻게 현재 소수 구분 기호를 가져올 수 있습니까?

+0

try ['string money_format (string $ format, float $ number)'] (http://php.net/money_format). – Jacco

답변

9

localeconv()해야합니다. 수동에서 :

지역화 숫자와 통화 형식 정보를 포함하는 연관 배열 을 돌려줍니다.

Here is a list (Windows의 경우 setlocale())

+0

감사합니다. 불행히도 빈 배열 요소를 반환합니다 : [thousands_sep] => [int_curr_symbol] => [currency_symbol] => [mon_decimal_point] => – Jorre

+0

이것은 윈도우와 관련이 있습니다. 모든게 잘 내 맥/리눅스에서 작동하지만, 솔루션을 우리의 윈도우 dev에 기계를 통해 well로 형식화 된 합의를 얻으려고했다. 오 잘. 답변 해주셔서 감사합니다! – Jorre

0

숀 브라이트가 맞습니다. localeconv() 기능을 사용하십시오. Unix 기반 OS는 "en-US"를 사용하는 반면 표기법처럼 "en_US.UTF-8"을 사용하므로 올바른 OS 로캘을 설정 했습니까?

+1

개발자 컴퓨터와 제품 서버에 다른 OS가 있다면'setlocale' (LC_ALL, 'en_US.utf8', 'en-US')'처럼'setlocale'을 호출 할 수 있습니다. 함수는 처음 발견 된 로케일을 사용합니다. – WASD42

+0

고맙습니다. 솔루션처럼 들리지만 그래도이 대체 로캘을 사용하는 경우에도 배열은 Windows에서 비어 있습니다. – Jorre

+0

[MSDN 설명서] (http://msdn.microsoft.com/en-us/library/39cwe7zf)에서 로케일을 사용해보십시오. % 28vs.71 % 29.aspx). 'setlocale (LC_ALL, 'en_US.utf8', 'american')'은 내 XP와 Vista 모두에서 완벽하게 작동하며 통화 이름과 기호 및 숫자 구분 기호로 채워진 배열을 반환합니다. – WASD42

1

이 최고 아니지만, 그것은 작동합니다

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

localeconv()는 소수점 문자 이외의 다른 분야와 연관 배열을 반환합니다.

관련 문제