 |
[PHP]
php ฟังก์ชั่นแปลงค่าเงินตัวเลขเป็นตัวอักษร รองรับหลัก ล้านล้าน ประยุกต์มา |
|
 |
|
|
 |
 |
|
ขอบคุณต้นฉบับจาก https://www.thaicreate.com/php/forum/003720.html by Mr.win
เป็น
Code (PHP)
01. <?PHP
02. function convert( $number ){
03. $txtnum1 = array ( 'ศูนย์' , 'หนึ่ง' , 'สอง' , 'สาม' , 'สี่' , 'ห้า' , 'หก' , 'เจ็ด' , 'แปด' , 'เก้า' , 'สิบ' );
04. $txtnum2 = array ( '' , 'สิบ' , 'ร้อย' , 'พัน' , 'หมื่น' , 'แสน' , 'ล้าน' , 'สิบ' , 'ร้อย' , 'พัน' , 'หมื่น' , 'แสน' , 'ล้าน' );
05. $number = str_replace ( "," , "" , $number );
06. $number = str_replace ( " " , "" , $number );
07. $number = str_replace ( "บาท" , "" , $number );
08. $number = explode ( "." , $number );
09. if (sizeof( $number )>2){
10. return 'ทศนิยมหลายตัวนะจ๊ะ' ;
11. exit ;
12. }
13. $strlen = strlen ( $number [0]);
14. $convert = '' ;
15. for ( $i =0; $i < $strlen ; $i ++){
16. $n = substr ( $number [0], $i ,1);
17. if ( $n !=0){
18. if ( $i ==( $strlen -1) AND $n ==1){ $convert .= 'เอ็ด' ; }
19. elseif ( $i ==( $strlen -2) AND $n ==2){ $convert .= 'ยี่' ; }
20. elseif ( $i ==( $strlen -2) AND $n ==1){ $convert .= '' ; }
21. else { $convert .= $txtnum1 [ $n ]; }
22. $convert .= $txtnum2 [ $strlen - $i -1];
23. }
24. }
25.
26. $convert .= 'บาท' ;
27. if ( $number [1]== '0' OR $number [1]== '00' OR
28. $number [1]== '' ){
29. $convert .= 'ถ้วน' ;
30. } else {
31. $strlen = strlen ( $number [1]);
32. for ( $i =0; $i < $strlen ; $i ++){
33. $n = substr ( $number [1], $i ,1);
34. if ( $n !=0){
35. if ( $i ==( $strlen -1) AND $n ==1){ $convert
36. .= 'เอ็ด' ;}
37. elseif ( $i ==( $strlen -2) AND
38. $n ==2){ $convert .= 'ยี่' ;}
39. elseif ( $i ==( $strlen -2) AND
40. $n ==1){ $convert .= '' ;}
41. else { $convert .= $txtnum1 [ $n ];}
42. $convert .= $txtnum2 [ $strlen - $i -1];
43. }
44. }
45. $convert .= 'สตางค์' ;
46. }
47. return $convert ;
48. }
49. ## วิธีใช้งาน
50. $x = '9123568543241.25' ;
51. echo $x . "=>" .convert( $x );
52. ?>
Tag : PHP
|
|
 |
 |
 |
 |
Date :
2011-11-05 10:56:59 |
By :
tongkamlekdee |
View :
24261 |
Reply :
17 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คุ้นๆแหะตัวนี้
|
 |
 |
 |
 |
Date :
2011-11-05 12:19:01 |
By :
Dragons_first |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมไปเอามาจากไหนครับ มันหลายปีแล้ว 6-7 ปี
|
 |
 |
 |
 |
Date :
2011-11-08 09:40:36 |
By :
webmaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณมากๆๆๆครับ ^_^
|
 |
 |
 |
 |
Date :
2013-08-18 06:02:27 |
By :
มังกร |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณมากๆ นะคร้า
|
 |
 |
 |
 |
Date :
2013-10-27 19:59:19 |
By :
muicom |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่ไม่รองรับ
สิบเอ็ดล้าน
ยี่สิบเอ็ดล้าน
เป็นต้นครับ
|
 |
 |
 |
 |
Date :
2013-11-01 13:27:16 |
By :
ิเบิร์ด |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตัวนี้ใช้งานได้มากกว่า12หลักไม่รวมทศนิยมอีก2หลักนะครับ
Code (PHP)
01. <?
02. function Convert( $amount_number )
03. {
04. $amount_number = number_format( $amount_number , 2, "." , "" );
05. $pt = strpos ( $amount_number , "." );
06. $number = $fraction = "" ;
07. if ( $pt === false)
08. $number = $amount_number ;
09. else
10. {
11. $number = substr ( $amount_number , 0, $pt );
12. $fraction = substr ( $amount_number , $pt + 1);
13. }
14.
15. $ret = "" ;
16. $baht = ReadNumber ( $number );
17. if ( $baht != "" )
18. $ret .= $baht . "บาท" ;
19.
20. $satang = ReadNumber( $fraction );
21. if ( $satang != "" )
22. $ret .= $satang . "สตางค์" ;
23. else
24. $ret .= "ถ้วน" ;
25. return $ret ;
26. }
27.
28. function ReadNumber( $number )
29. {
30. $position_call = array ( "แสน" , "หมื่น" , "พัน" , "ร้อย" , "สิบ" , "" );
31. $number_call = array ( "" , "หนึ่ง" , "สอง" , "สาม" , "สี่" , "ห้า" , "หก" , "เจ็ด" , "แปด" , "เก้า" );
32. $number = $number + 0;
33. $ret = "" ;
34. if ( $number == 0) return $ret ;
35. if ( $number > 1000000)
36. {
37. $ret .= ReadNumber( intval ( $number / 1000000)) . "ล้าน" ;
38. $number = intval ( fmod ( $number , 1000000));
39. }
40.
41. $divider = 100000;
42. $pos = 0;
43. while ( $number > 0)
44. {
45. $d = intval ( $number / $divider );
46. $ret .= (( $divider == 10) && ( $d == 2)) ? "ยี่" :
47. ((( $divider == 10) && ( $d == 1)) ? "" :
48. ((( $divider == 1) && ( $d == 1) && ( $ret != "" )) ? "เอ็ด" : $number_call [ $d ]));
49. $ret .= ( $d ? $position_call [ $pos ] : "" );
50. $number = $number % $divider ;
51. $divider = $divider / 10;
52. $pos ++;
53. }
54. return $ret ;
55. }
56. ## วิธีใช้งาน
57. $num1 = '111111111111.11' ;
58. $num2 = '222222222222.22' ;
59. echo $num1 . " = " .Convert( $num1 ), "<br>" ;
60. echo $num2 . " = " .Convert( $num2 ), "<br>" ;
61. ?>
ผลที่ได้คือ
111111111111.11 = หนึ่งแสนหนึ่งหมื่นหนึ่งพันหนึ่งร้อยสิบเอ็ดล้านหนึ่งแสนหนึ่งหมื่นหนึ่งพันหนึ่งร้อยสิบเอ็ดบาทสิบเอ็ดสตางค์
222222222222.22 = สองแสนสองหมื่นสองพันสองร้อยยี่สิบสองล้านสองแสนสองหมื่นสองพันสองร้อยยี่สิบสองบาทยี่สิบสองสตางค์
|
 |
 |
 |
 |
Date :
2015-01-14 04:15:10 |
By :
ชาตรี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คุ้นๆๆเหมือนมีอยู่ในหนังสือเล่มหนึ่งตอนที่ผมหัด php ใหม่ๆเมื่อ 7ปีที่แล้ว 55555
|
ประวัติการแก้ไข 2015-01-14 21:57:07
 |
 |
 |
 |
Date :
2015-01-14 21:56:19 |
By :
somparn |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
class นี้ตั้งแต่ thaidev ยังไม่เดี้ยงนู้นนนน คิดดูว่านานแค่ใหน ฮ่า
|
 |
 |
 |
 |
Date :
2015-01-15 08:57:44 |
By :
deawx |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อันนี้เขียนเองชัวร์ ใช้งานอยู่ เป็นคลาส
Code (PHP)
01. <?PHP
02. class hk_baht{
03. public $result ;
04. public function __construct( $num ){
05. $this ->result= $this ->toBaht( $num , true );
06. }
07. public function toBaht( $number ){
08. if ( !preg_match( '/^[0-9]+(?:\.[0-9]{2}){0,1}$/' , $number = str_replace ( ',' , '' , $number ) )){
09. return 'This is not currency format' ;
10. }
11. $num = explode ( "." , $number );
12. $convert = $this ->cv( $num [0]) . 'บาท' . ( $st = $this ->cv( $num [1]) ) . ( $st > '' ? 'สตางค์' : '' );
13. return $convert ;
14. }
15. private function cv( $num ){
16. $th_num = array ( '' , array ( 'หนึ่ง' , 'เอ็ด' ), array ( 'สอง' , 'ยี่' ), 'สาม' , 'สี่' , 'ห้า' , 'หก' , 'เจ็ด' , 'แปด' , 'เก้า' , 'สิบ' );
17. $th_digit = array ( '' , 'สิบ' , 'ร้อย' , 'พัน' , 'หมื่น' , 'แสน' , 'ล้าน' );
18. $ln = strlen ( $num );
19. $t = '' ;
20. for ( $i = $ln ; $i >0; $i --){
21. $x = $i -1;
22. $n = substr ( $num , $ln - $i ,1);
23. $digit = $x % 6;
24. if ( $n !=0){
25. if ( $n ==1 ){ $t .= $digit ==1? '' : $th_num [1][ $digit ==0? 1 : 0]; }
26. elseif ( $n ==2 ){ $t .= $th_num [2][ $digit ==1? 1 : 0]; }
27. else { $t .= $th_num [ $n ]; }
28. $t .= $th_digit [( $digit ==0 && $x >0 ? 6 : $digit )];
29. } else {
30. $t .= $th_digit [ $digit ==0 && $x >0 ? 6 : 0 ];
31. }
32. }
33. return $t ;
34. }
35. }
36. ## วิธีใช้งาน
37. $y = '10,000,021,654,321.50' ;
38. $z = '10,000,011,000,321.25' ;
39. $a = '10,000,000.00' ;
40.
41. $x = new hk_baht( $y );
42. echo $y . "=>" . $x ->result;
43. echo '<br>' , $z , "=>" , $x ->toBaht( $z );
44. echo '<br>' , $a , "=>" , $x ->toBaht( $a );
45. ?>
|
 |
 |
 |
 |
Date :
2015-01-15 10:47:09 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ปรับปรุงเพิ่มเติม
Code (PHP)
01. <?PHP
02. class hk_baht{
03. public $result ;
04. public function __construct( $num ){
05. $this ->result= $this ->toBaht( $num , true );
06. }
07. public function toBaht( $number ){
08. if (!preg_match( '/^([0-9]+)(\.[0-9]{0,4}){0,1}$/' , $number = str_replace ( ',' , '' , $number ), $m ))
09. return 'This is not currency format' ;
10. $m [2]= count ( $m )==3? intval (( '0' . $m [2])*100 + 0.5) : 0;
11. $st = $this ->cv( $m [2]);
12. return $this ->cv( $m [1]) . 'บาท' . $st . ( $st > '' ? 'สตางค์' : '' );
13. }
14. private function cv( $num ){
15. $th_num = array ( '' , array ( 'หนึ่ง' , 'เอ็ด' ), array ( 'สอง' , 'ยี่' ), 'สาม' , 'สี่' , 'ห้า' , 'หก' , 'เจ็ด' , 'แปด' , 'เก้า' , 'สิบ' );
16. $th_digit = array ( '' , 'สิบ' , 'ร้อย' , 'พัน' , 'หมื่น' , 'แสน' , 'ล้าน' );
17. $ln = strlen ( $num );
18. $t = '' ;
19. for ( $i = $ln ; $i >0; $i --){
20. $x = $i -1;
21. $n = substr ( $num , $ln - $i ,1);
22. $digit = $x % 6;
23. if ( $n !=0){
24. if ( $n ==1 ){ $t .= $digit ==1? '' : $th_num [1][ $digit ==0? ( $t ? 1 : 0) : 0]; }
25. elseif ( $n ==2 ){ $t .= $th_num [2][ $digit ==1? 1 : 0]; }
26. else { $t .= $th_num [ $n ]; }
27. $t .= $th_digit [( $digit ==0 && $x >0 ? 6 : $digit )];
28. } else {
29. $t .= $th_digit [ $digit ==0 && $x >0 ? 6 : 0 ];
30. }
31. }
32. return $t ;
33. }
34. }
35. ## วิธีใช้งาน
36. $x = new hk_baht( $b = '10,000,021,654,321.50' );
37. echo $b . "=>" . $x ->result;
38. echo '<br>' , $b = '10,000,011,000,321.25' , "=>" , $x ->toBaht( $b );
39. echo '<br>' , $b = '10,000,000.00' , "=>" , $x ->toBaht( $b );
40. echo '<br>' , $b = '1.1' , "=>" , $x ->toBaht( $b );
41. echo '<br>' , $b = '1.11' , "=>" , $x ->toBaht( $b );
42. echo '<br>' , $b = '1.1135' , "=>" , $x ->toBaht( $b );
43. echo '<br>' , $b = '1.1167' , "=>" , $x ->toBaht( $b );
44. echo '<br>' , $b = '1.11.1' , "=>" , $x ->toBaht( $b );
45. ?>
|
ประวัติการแก้ไข 2015-08-14 10:24:06
 |
 |
 |
 |
Date :
2015-08-14 10:23:33 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พอดีแอบมาหาข้อมูลเอาโค้ดไปใช้และแก้ไขเล็กๆ น้อยๆครับ เพิ่มเติมแก้พวกค่า 1-1.99 เอ็ดบาท เอ็ดสตางค์ และแก้ไขเพิ่มเติมค่าศูนย์บาทXXXสตางค์เพิ่มเข้าไปครับ
Code (PHP)
01. <?PHP
02. function m2t( $number ){
03. $number = number_format( $number , 2, '.' , '' );
04. $numberx = $number ;
05. $txtnum1 = array ( 'ศูนย์' , 'หนึ่ง' , 'สอง' , 'สาม' , 'สี่' , 'ห้า' , 'หก' , 'เจ็ด' , 'แปด' , 'เก้า' , 'สิบ' );
06. $txtnum2 = array ( '' , 'สิบ' , 'ร้อย' , 'พัน' , 'หมื่น' , 'แสน' , 'ล้าน' , 'สิบ' , 'ร้อย' , 'พัน' , 'หมื่น' , 'แสน' , 'ล้าน' );
07. $number = str_replace ( "," , "" , $number );
08. $number = str_replace ( " " , "" , $number );
09. $number = str_replace ( "บาท" , "" , $number );
10. $number = explode ( "." , $number );
11. if (sizeof( $number )>2){
12. return 'ทศนิยมหลายตัวนะจ๊ะ' ;
13. exit ;
14. }
15. $strlen = strlen ( $number [0]);
16. $convert = '' ;
17. for ( $i =0; $i < $strlen ; $i ++){
18. $n = substr ( $number [0], $i ,1);
19. if ( $n !=0){
20. if ( $i ==( $strlen -1) AND $n ==1){ $convert .= 'เอ็ด' ; }
21. elseif ( $i ==( $strlen -2) AND $n ==2){ $convert .= 'ยี่' ; }
22. elseif ( $i ==( $strlen -2) AND $n ==1){ $convert .= '' ; }
23. else { $convert .= $txtnum1 [ $n ]; }
24. $convert .= $txtnum2 [ $strlen - $i -1];
25. }
26. }
27.
28. $convert .= 'บาท' ;
29. if ( $number [1]== '0' OR $number [1]== '00' OR
30. $number [1]== '' ){
31. $convert .= 'ถ้วน' ;
32. } else {
33. $strlen = strlen ( $number [1]);
34. for ( $i =0; $i < $strlen ; $i ++){
35. $n = substr ( $number [1], $i ,1);
36. if ( $n !=0){
37. if ( $i ==( $strlen -1) AND $n ==1){ $convert
38. .= 'เอ็ด' ;}
39. elseif ( $i ==( $strlen -2) AND
40. $n ==2){ $convert .= 'ยี่' ;}
41. elseif ( $i ==( $strlen -2) AND
42. $n ==1){ $convert .= '' ;}
43. else { $convert .= $txtnum1 [ $n ];}
44. $convert .= $txtnum2 [ $strlen - $i -1];
45. }
46. }
47. $convert .= 'สตางค์' ;
48. }
49.
50. if ( $numberx < 1)
51. {
52. $convert = "ศูนย์" . $convert ;
53. }
54.
55.
56. $len = strlen ( $numberx );
57. $lendot1 = $len - 2;
58. $lendot2 = $len - 1;
59. if (( $numberx [ $lendot1 ] == 0) && ( $numberx [ $lendot2 ] == 1))
60. {
61. $convert = substr ( $convert ,0,-10);
62. $convert = $convert . "หนึ่งสตางค์" ;
63. }
64.
65.
66. if ( $numberx >= 1)
67. {
68. if ( $numberx < 2)
69. {
70. $convert = substr ( $convert ,4);
71. $convert = "หนึ่ง" . $convert ;
72. }
73. }
74. return $convert ;
75. }
76. ?>
|
 |
 |
 |
 |
Date :
2016-09-22 02:25:39 |
By :
mingpukja |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

|
 |
 |
 |
 |
Date :
2017-08-03 17:48:59 |
By :
xxxxxxxxx |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ศูนย์บาท นี่ ทำยังไงครับ
|
 |
 |
 |
 |
Date :
2024-09-16 10:40:43 |
By :
Pt Wos |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|