2013-08-02 4 views
0

미리 감사드립니다.PHP에서 소수점 3 자리 뒤에 오는 0을 삭제하는 방법은 무엇입니까?

WP WooCommerce 스토어가 있으며 소수 자릿수 3 개가있는 가격을 업로드해야합니다 (예 : £ 0.012 (000s 단위로 구매 한 제품).

대다수의 제품은 소수점 이하 2 자리로 '보통'입니다.

WooCommerce에는 소수점 이하 세 자리까지 허용하는 함수가 있습니다. 또한 후행 0을 삭제하는 함수이지만 정수인 경우 삭제합니다. 10.00 파운드는 10 파운드가됩니다.

'보통'가격의 제품 중 95 %가 £ 10.000 또는 £ 5.230을 표시하기 시작하면 내 문제가 발생합니다.

한 마디로 말미암아 후행 0을 삭제할 수있는 방법을 찾고 있지만 소수점 3 자리 만 찾으면됩니다.

는 유지 - £ 0.012 누군가가 좋은 해결책이 있습니까 £ 10.00 £ 5.23

같은 가격에 어떤 제 3 진수 0을 삭제 하시겠습니까?

고마워요.

답변

0

왜 이렇게 좋을까요? 당신이 돈 기호 문자열로 번호를 경우

$numberAsString = number_format($yourUglyNumber, 2, '.', ' '); 

PHP function number_format


먼저이를 필터링 할 수 있습니다

$moneyString = "£300.4578525"; 

// remove all non-numeric and cast to number 
$moneyNum = preg_replace("/[^0-9.]/", "", $moneyString) + 0; 

// format 
$formatted = number_format($moneyNum, 2, '.', ' '); 

// add the money symbol if you want 
$formatted = '£' + $formatted. 
2

정규 표현식을 사용하려면 당신은 그들과 일치시킬 수 있습니다

(?<=\d{2})(0+)$ 

preg_replace("/(?<=\d{2})(0+)$/", "", $price_string) 

은 두 자리 이상인 모든 0과 일치시킵니다. (이 괄호 안에 제로를 일치) : else 문은 아마 일하는 것이

12.002(0) 
12.00(0000) 
12.01(000000) 
12.232(0) 
12.123 
+0

을 이것이다 완벽하게 고맙습니다. 새 사용자로 투표 할 수는 없지만 preg_replace ("/ (? <= \ d {2}) (0 +) $ /", "", $ price_string) 일했다! – user2646560

+0

@ user2646560, 투표 할 수는 없지만 체크 표시 ✔를 클릭하여이 대답을 수락 할 수 있습니다 (계속 진행하십시오!). –

1

는 IF, 당신은 또한 10.001처럼 가격이없는 경우 :

$price = '0.001'; 

if ($price < 1) { 
    // don't round 
} else { 
    $price = number_format($price, 2); 
} 

하거나

$price = ($price < 1) ? $price : number_format($price, 2) ; 
관련 문제