แปลงตัวเลขให้เป็นตัวอักษรภาษาไทย PHP Code Thai BathText

แปลงตัวเลขให้เป็นตัวอักษรภาษาไทย PHP Code Thai BathText

PHP CODE FATHER โปรแกรมช่วยสร้างโค้ด โปรเจ็ค PHP+MySQL+Boostrap ใช้งานง่าย ๆ


วันนี้ไม่มีอะไรทำ ก็เลยว่างหาฟังก์ชั่นแปลงตัวเลขให้เป็นตัวหนังสือ(ตัวอักษรภาษาไทย) ดู

ถ้าใครเคยใช้ Excel ก็อาจจะคุ้น ๆ หูกันฟังก์ชั่น BathText ใน Excel นะครับ

ก็เป็นฟังก์ชั่นที่เอาไว้เปลี่ยนตัวเลขให้เป็นตัวอักษรนั่นหล่ะครับ

 

ตัวอย่างเช่น

 

1111111.11
หนึ่งล้านหนึ่งแสนหนึ่งหมื่นหนึ่งพันหนึ่งร้อยเอ็ดบาท สิบเอ็ดสตางค์

 

แต่ถ้าจะหาใน PHP แล้วหล่ะก็ ขอบอกเลยครับว่า ...ไม่มี

ก็เลยไปค้นหาดู ก็เจอหลาย ๆ เว็บที่เขาเขียนขึ้นมา โค้ดข้างล่างนี้ผมดัดแปลงจากโค้ดตัวอย่างในเว็บนะครับ

เขาใช้ภาษา หรือ ฟังก์ชั่นซับซ้อนเกินไป ผมดูแล้วเข้าใจยาก ก็เลยทำใหม่ซะเลย

 

เพราะที่เขาทำไว้ รู้สึกว่าจะยังไม่ครบถ้วนในหลาย ๆ จุด

ผมก็เลยจัดใหม่ ให้ครบถ้วน สมบูรณ์แบบที่สุดนะครับ

 

ก็ได้โค้ดตามนี้ครับผม...(ก๊อปไปเทสได้เลยนะครับ)


<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>php bathtext by
www.code-father.com</title>
<?
$input_number=1111111.11;
echo $input_number."<br>";

$digit=array('ศูนย์','หนึ่ง','สอง','สาม','สี่','ห้า','หก','เจ็ด','แปด','เก้า','สิบ','สิบเอ็ด');
$digit2=array('','สิบ','ร้อย','พัน','หมื่น','แสน','ล้าน');

$explode_number = explode(".",$input_number);
$num0=$explode_number[0]; // เลขจำนวนเต็ม
$num1=$explode_number[1]; // หลักทศนิยม


// เลขจำนวนเต็ม
$didit2_chk=strlen($num0)-1;
for($i=0;$i<=strlen($num0)-1;$i++){
 
  $cut_input_number=substr($num0,$i,1);
  
  if($cut_input_number==0){ // ถ้าเลข 0 ไม่ต้องใส่ค่าอะไร
   //$bathtext1.=''."".$digit2[$didit2_chk];
  }elseif($cut_input_number==2 && $didit2_chk==1){ // ถ้าเลข 2 อยู่หลักสิบ
   $bathtext1.='ยี่'."".$digit2[$didit2_chk];
  }elseif($cut_input_number==1 && $didit2_chk==1){ // ถ้าเลข 1 อยู่หลักสิบ
   //$bathtext1.= ''."".$digit2[$didit2_chk]; 
  }elseif($cut_input_number==1 && $didit2_chk==0){ // ถ้าเลข 1 อยู่หลักหน่วย
   if(substr($num0,$i-1,1)==0){
    $bathtext1.= 'หนึ่ง'."".$digit2[$didit2_chk];
   }else{
    $bathtext1.= 'เอ็ด'."".$digit2[$didit2_chk];
   } 
     
  }else{
   $bathtext1.= $digit[$cut_input_number]."".$digit2[$didit2_chk];
  }
  
  
  $didit2_chk=$didit2_chk-1;
}
$bathtext1.='บาท ';

// เลขทศนิยม
$didit2_chk=strlen($num1)-1;
for($i=0;$i<=strlen($num1)-1;$i++){
 
  $cut_input_number=substr($num1,$i,1);
  
  if($cut_input_number==0){ // ถ้าเลข 0 ไม่ต้องใส่ค่าอะไร
  
  }elseif($cut_input_number==2 && $didit2_chk==1){ // ถ้าเลข 2 อยู่หลักสิบ
   $bathtext1.='ยี่'."".$digit2[$didit2_chk];
  }elseif($cut_input_number==1 && $didit2_chk==1){ // ถ้าเลข 1 อยู่หลักสิบ
   $bathtext1.= ''."".$digit2[$didit2_chk];
  }elseif($cut_input_number==1 && $didit2_chk==0){ // ถ้าเลข 1 อยู่หลักหน่วย
   if(substr($num1,$i-1,1)==0){
    $bathtext1.= 'หนึ่ง'."".$digit2[$didit2_chk];
   }else{
    $bathtext1.= 'เอ็ด'."".$digit2[$didit2_chk];
   } 
  }else{
   $bathtext1.= $digit[$cut_input_number]."".$digit2[$didit2_chk];
  }
  
  
  $didit2_chk=$didit2_chk-1;
}
$bathtext1.='สตางค์';

echo $bathtext1;
?>

 

หมายเหตุ : โค้ดในตัวอย่างนี้รองรับตัวเลขที่หลักล้าน ( 7 หลัก) เท่านั้นนะครับ

ใครที่อยากได้เยอะกว่านี้ หลัก ล้านล้าน แสนล้าน พันล้าน ก็เพิ่มเติมโค้ดเอาเองนะครับ

 

ขอบคุณครับ ที่แวะเข้ามาเยี่ยมชม


ย้อนกลับ กลับหน้าแรก