2013-01-10 4 views
0

그래서이 작은 문제가 있습니다. 숫자를 입력 할 수있는 양식이 있습니다.이 양식은 쉼표 (decimal) (,) 또는 미국식 소수점 (.)과 함께 유럽 형식으로 입력 할 수 있습니다.숫자를 다른 숫자로 변환

이 사실을 알고 있으면 유럽식 숫자 형식을 어떻게 변환 할 수 있습니까? 그리고 미국의 형식은 그대로 유지됩니다.

이 수식을 사용했지만 결과가 잘못되었습니다.

$american = '12.5'; 
$european = '12,5'; 

$locale = 'it_IT.utf8'; 
setlocale ('LC_NUMERIC', $locale); 
$fmt = new NumberFormatter ($locale, NumberFormatter::DECIMAL); 
$american = $ fmt->parse($american); 
$european = $ fmt->parse($europen); 

response 

$american = 125 
$european = 12.5 

어디에서 문제가 발생합니까?

php ver. 5.4.10

+0

당신이'$ europen'에서'a'를 놓친 것입니다. – Ross

+1

$ stringFormatted = str_replace (',', '.', $ inputstring); 그다지 힘들지 않아야합니다. 너가 원하는게 그거야? – Alex

+0

아니요 응용 프로그램에서 국제화를 구현하려면 trasparent 방식으로 숫자를 변환 한 다음 mysql 테이블에 삽입하십시오. – Michelangelo

답변

0

대신 str_replace()을 사용하는 것이 좋지 않습니까?

+0

True,하지만 숫자는 유럽 또는 미국 형식으로 올 수 있습니다. 그런 다음 NumberFormatter 함수로 변환 할 수 있습니다. EU 1.234.567,89 또는 US 1,234,567.89이어야합니다. – Michelangelo

2

시도 다음 코드를

$american = '12.5'; 
$european = '12,5'; 

$locale = 'en_US.utf8'; 
$fmt = new NumberFormatter ($locale, NumberFormatter::DECIMAL); 
$american = $fmt->parse($american); 

$locale = 'it_IT.utf8'; 
$fmt = new NumberFormatter ($locale, NumberFormatter::DECIMAL); 
$european = $fmt->parse($european); 

이 원하는 결과를 얻기?

+0

동일한 답변이 없음 – Michelangelo

+0

결과는 무엇입니까? –

+0

$ american = 125 $ european = 12.5 – Michelangelo