시도 할 수 있습니다.
if (strpos($string, '.') === false
&& strpos($string, ',') === false
) {
$string .= '.00';
}
$string = preg_replace('/[^0-9.,]/', '', $string);
$string = preg_replace('/[.,]/', '.', $string);
while (
strpos($string, '.') != strrpos($string, '.')
|| strlen($string) - 1 - strrpos($string, '.') > 2
) {
$pos = strpos($string, '.');
if ($pos > 0) {
$string = substr($string, 0, $pos) . substr($string, $pos +1);
} else {
break;
}
}
return (float)$string;
그리고 마지막으로가 number_format()
을 사용하는 숫자가 아닌 문자로
// these are my unit test check
0.00 returned by filtering 0
0.20 returned by filtering 0.2
0.20 returned by filtering 0,2
0.22 returned by filtering 0.22
0.22 returned by filtering 0,22
18.20 returned by filtering 18.2
1000.00 returned by filtering 1 000
1000.00 returned by filtering 1,000
1000.00 returned by filtering 1,000.00
1000.00 returned by filtering 1000,00
1000.00 returned by filtering 1 000,00
1000.20 returned by filtering 1 000,2
1000.20 returned by filtering 1 000,20 $
1000.20 returned by filtering abc1def00test0dot.twenty20
및 기타 조합의 인터레이스 : 이러한 입력을 #####.##
로 포맷하고 지원하는 경우
코드는 출력 문자열을 재 작업한다 표준화 된 번호를 다시 포맷하십시오.
이봐 요, 나는 그 생각을했으면 좋겠어 :)이 주석에 유용한 것을 추가하기 위해, 기본값은 아메리칸 형식 ('.' 소수 구분 기호,'. ')이므로'number_format'의 마지막 두 인수는 필요하지 않습니다. ','1000 구분자). – eykanal
이 코드를 이용해 주셔서 감사 드리며, 원래 번호에 소수점 이하 자릿수가 없으면/100이 작동하지 않는다는 것을 추가/지적하고 싶습니다. – hyarion