1/31/2561

ตัวอย่างการเขียนโปรแกรมแปลงตัวเลขเป็นข้อความภาษาไทย

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

<?php

function to_text($num)
{

    $num_len=strlen($num);

    $out_put="";

    $i;

    $arr=[];

    $temp=1;

    for($i=0;$i<$num_len;$i++)
    {

        $arr[count($arr)]=$temp;

        $temp++;

        if($temp==7)
        {
           $temp=1;
        }

    }

 

    for($i=0;$i<count($arr);$i++)
    {

        $out_put.=get_num_value(substr($num,$i,1)).get_main_value($arr[(count($arr)-1)-$i],substr($num,$i,1));

        $main_pos=(count($arr)-1)-$i;

        if ( ( ($main_pos %6)==0)&&($main_pos!=0) )
        {
           $out_put.="ล้าน";
        }

    }

    $out_put=str_replace("สองสิบ","ยี่สิบ",$out_put);
    $out_put=str_replace("สิบหนึ่ง","สิบเอ็ด",$out_put);
    $out_put=str_replace("หนึ่งสิบ","สิบ",$out_put);
    $out_put=str_replace("สองสิบ","ยี่สิบ",$out_put);

    return $out_put;

}


function get_num_value($i)
{

    if ($i==1)
    {
        return "หนึ่ง";
    }

    if ($i==2)
    {
        return "สอง";
    }

    if ($i==3)
    {
        return "สาม";
    }

    if ($i==4)
    {
        return "สี่";
    }

    if ($i==5)
    {
        return "ห้า";
    }

    if ($i==6)
    {
        return "หก";
    }

    if ($i==7)
    {
        return "เจ๊ด";
    }

    if ($i==8)
    {
        return "แปด";
    }

    if ($i==9)
    {
        return "เก้า";
    }

    if ($i=="0")
    {
        return "";
    }
}

function get_main_value($i,$val)
{
    if ($val=="0")
    {
        return "";
    }

    if ($i==1)
    {
        return "";
    }

    if ($i==2)
    {
        return "สิบ";
    }

    if ($i==3)
    {
        return "ร้อย";
    }

    if ($i==4)
    {
        return "พัน";
    }
 
    if ($i==5)
    {
        return "หมื่น";
    }

    if ($i==6)
    {
        return "แสน";
    }

}

//เรียกใช้ function แปลงตัวเลขเป็นข้อความภาษาไทย
echo number_format(98745621)."=>".to_text("98745621");


?>

ผลลัพธ์ที่ได้คือ