วันอาทิตย์ที่ 2 ธันวาคม พ.ศ. 2555

Code PHP สำหรับแปลงตัวเลข(ค่าเงิน)ให้เป็นคำอ่านภาษาไทย

/**
 * เวลาเรียกใช้ให้เรียก ThaiBahtConversion(1234020.25); ประมาณนี้
 * @param numberic $amount_number
 * @return string
 */
function ThaiBahtConversion($amount_number)
{
    $amount_number = number_format($amount_number, 2, ".","");
    //echo "<br/>amount = " . $amount_number . "<br/>";
    $pt = strpos($amount_number , ".");
    $number = $fraction = "";
    if ($pt === false)
        $number = $amount_number;
    else
    {
        $number = substr($amount_number, 0, $pt);
        $fraction = substr($amount_number, $pt + 1);
    }
   
    //list($number, $fraction) = explode(".", $number);
    $ret = "";
    $baht = ReadNumber ($number);
    if ($baht != "")
        $ret .= $baht . "บาท";
   
    $satang = ReadNumber($fraction);
    if ($satang != "")
        $ret .=  $satang . "สตางค์";
    else
        $ret .= "ถ้วน";
    //return iconv("UTF-8", "TIS-620", $ret);
    return $ret;
}

function ReadNumber($number)
{
    $position_call = array("แสน", "หมื่น", "พัน", "ร้อย", "สิบ", "");
    $number_call = array("", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า");
    $number = $number + 0;
    $ret = "";
    if ($number == 0) return $ret;
    if ($number > 1000000)
    {
        $ret .= ReadNumber(intval($number / 1000000)) . "ล้าน";
        $number = intval(fmod($number, 1000000));
    }
   
    $divider = 100000;
    $pos = 0;
    while($number > 0)
    {
        $d = intval($number / $divider);
        $ret .= (($divider == 10) && ($d == 2)) ? "ยี่" :
            ((($divider == 10) && ($d == 1)) ? "" :
            ((($divider == 1) && ($d == 1) && ($ret != "")) ? "เอ็ด" : $number_call[$d]));
        $ret .= ($d ? $position_call[$pos] : "");
        $number = $number % $divider;
        $divider = $divider / 10;
        $pos++;
    }
    return $ret;
}

Code ภาษา PHP ใช้สำหรับแปลงค่าเงิน แปลงตัวเลข ให้กลายเป็นคำอ่านภาษาไทย รองรับตัวเลขได้ประมาณ ล้านล้าน นะน่าจะไหวอยู่ไม่แน่ใจเหมือนกัน แต่การเขียนโปรแกรมเป็นแบบ Integer Base ก็คือใช้การคำนวณตัวเลขเป็นจำนวนเต็ม  ถ้าจะให้รองรับเลขมาก ๆ ก็น่าจะใช้เป็นรูปแบบของ String Base คือใช้การตัดสตริงเอาไม่ต้องมา div มา mod อยู่

มี bug หรือว่าข้อผิดพลาด หรืออยากจะให้รองรับเลขมากกว่านี้ก็ลองส่งคอมเม้นท์มาด้านล่างนะครับ ถ้าเปิดมาปุ๊บมาเห็นก็จะรีบแก้ไขให้ถูกต้องนะครับ

4 มกราคม 2557 - มีคนเปิดดูพันคนแล้วดีใจจังเลย อิอิ :)
9 กรกฎาคม 2557 - มีคนเปิดดูสองพันคนแล้ว :)



ด้านล่างนี้เผื่อ Search กันจะได้ Search เจอ blog เรา อิอิ :)

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

14 ความคิดเห็น:

  1. ขอบคุณครับ มัน้ยี่ยมมาก

    ตอบลบ
  2. สุดยอดครับ ไปแปะใช้ได้ทันทีเลย ขอบคุณครับ

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

    ตอบลบ
  3. ขอบคุณครับ รองรับเลข พันล้านได้ สบายเลย

    ตอบลบ
  4. ไม่ระบุชื่อ1 ตุลาคม 2558 เวลา 01:50

    เยี่ยมมากครับ ขอบคุณครับ

    ตอบลบ
  5. ขอบคุณครับ สุดยอดมากเลยครับ งานเนียนเวอร์

    ตอบลบ