ผู้เขียน หัวข้อ: สร้างฟังก์ชัน php แปลงตัวเลข เป็นข้อความตัวอักษร ภาษาไทย  (อ่าน 1605 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ clean

  • Administrator
  • Dev lnw
  • *****
  • กระทู้: 492
  • โดนถีบ +321/-0
    • ดูรายละเอียด
    • อีเมล์

สร้างฟังก์ชัน php แปลงตัวเลข เป็นข้อความตัวอักษร ภาษาไทย

อ้างจาก: สร้างฟังก์ชัน php แปลงตัวเลข เป็นข้อความตัวอักษร ภาษาไทย
<?php
function num2wordsThai($num){  
   $num=str_replace(",","",$num);
   $num_decimal=explode(".",$num);
   $num=$num_decimal[0];
    $returnNumWord;  
    $lenNumber=strlen($num);  
    $lenNumber2=$lenNumber-1;  
    $kaGroup=array("","สิบ","ร้อย","พัน","หมื่น","แสน","ล้าน","สิบ","ร้อย","พัน","หมื่น","แสน","ล้าน");  
    $kaDigit=array("","หนึ่ง","สอง","สาม","สี่","ห้า","หก","เจ็ต","แปด","เก้า");  
   $kaDigitDecimal=array("ศูนย์","หนึ่ง","สอง","สาม","สี่","ห้า","หก","เจ็ต","แปด","เก้า");  
    $ii=0;  
    for($i=$lenNumber2;$i>=0;$i--){  
        $kaNumWord[$i]=substr($num,$ii,1);  
        $ii++;  
    }  
    $ii=0;  
    for($i=$lenNumber2;$i>=0;$i--){  
        if(($kaNumWord[$i]==2 && $i==1) || ($kaNumWord[$i]==2 && $i==7)){  
            $kaDigit[$kaNumWord[$i]]="ยี่";  
        }else{  
            if($kaNumWord[$i]==2){  
                $kaDigit[$kaNumWord[$i]]="สอง";        
            }  
            if(($kaNumWord[$i]==1 && $i<=2 && $i==0) || ($kaNumWord[$i]==1 && $lenNumber>6 && $i==6)){  
                if($kaNumWord[$i+1]==0){  
                    $kaDigit[$kaNumWord[$i]]="หนึ่ง";      
                }else{  
                    $kaDigit[$kaNumWord[$i]]="เอ็ด";      
                }  
            }elseif(($kaNumWord[$i]==1 && $i<=2 && $i==1) || ($kaNumWord[$i]==1 && $lenNumber>6 && $i==7)){  
                $kaDigit[$kaNumWord[$i]]="";  
            }else{  
                if($kaNumWord[$i]==1){  
                    $kaDigit[$kaNumWord[$i]]="หนึ่ง";  
                }  
            }  
        }  
        if($kaNumWord[$i]==0){  
         if($i!=6){
               $kaGroup[$i]="";  
         }
        }  
        $kaNumWord[$i]=substr($num,$ii,1);  
        $ii++;  
        $returnNumWord.=$kaDigit[$kaNumWord[$i]].$kaGroup[$i];  
    }      
   if(isset($num_decimal[1])){
      $returnNumWord.="จุด";
      for($i=0;$i<strlen($num_decimal[1]);$i++){
            $returnNumWord.=$kaDigitDecimal[substr($num_decimal[1],$i,1)];   
      }
   }      
    return $returnNumWord;  
}
?>

การใช้งาน และผลลัพธิ์

อ้างจาก: สร้างฟังก์ชัน php แปลงตัวเลข เป็นข้อความตัวอักษร ภาษาไทย
<?php  
echo num2wordsThai("25010");  
echo "<br>";  
// สองหมื่นห้าพันสิบ  
  
// การใช้งาน รองรับตัวเลขมี comma  
echo num2wordsThai("1,450");  
echo "<br>";  
// หนึ่งพันสี่ร้อยห้าสิบ  
  
// รองรับ จุดทศนิยม    
echo num2wordsThai("250.10");  
echo "<br>";  
// สองร้อยห้าสิบจุดหนึ่งศูนย์  
  
//รองรับค่าตัวเลข มากกว่าแสนล้าน  
echo num2wordsThai("500,001,001,000.10");  
echo "<br>";  
// ห้าแสนหนึ่งล้านหนึ่งพันจุดหนึ่งศูนย์  
?>

ขอบคุณเนื้อหาดีๆจาก ninenik.com
« แก้ไขครั้งสุดท้าย: 26 มกราคม พ.ศ. 2010, 10:27:29 โดย clean »

0 Tive Who's like!? [Click to Show!]