Code PHP đọc số

Hình minh họa việc đọc số thành chữ tiếng việt
Hình minh họa việc đọc số thành chữ tiếng việt

Nhu cầu đọc số thành chữ là vô cùng cần thiết trong các bài toán quản lý. Nhưng khi bắt tay vào viết một hàm để đọc số thành chữ rất là mất thời gian. Hôm nay, Tôi chia sẽ với các bạn một class php tôi đã viết sẵng chỉ việc sử dụng lại thôi cho đỡ tốn thời gian hihi:

<?php
class Docso
{
    public function doc1so($so)
    {
        $arr_chuhangdonvi = array(
            'không',
            'một',
            'hai',
            'ba',
            'bốn',
            'năm',
            'sáu',
            'bảy',
            'tám',
            'chín');
        $resualt = '';
        $resualt = $arr_chuhangdonvi[$so];
        return $resualt;
    }
    public function doc2so($so)
    {
        $arr_chubinhthuong = array(
            'không',
            'một',
            'hai',
            'ba',
            'bốn',
            'năm',
            'sáu',
            'bảy',
            'tám',
            'chín');
        $arr_chuhangdonvi = array(
            'mươi',
            'mốt',
            'hai',
            'ba',
            'bốn',
            'lăm',
            'sáu',
            'bảy',
            'tám',
            'chín');
        $arr_chuhangchuc = array(
            '',
            'mười',
            'hai mươi',
            'ba mươi',
            'bốn mươi',
            'năm mươi',
            'sáu mươi',
            'bảy mươi',
            'tám mươi',
            'chín mươi');
        $resualt = '';
        $sohangchuc = substr($so, 0, 1);
        $sohangdonvi = substr($so, 1, 1);
        $resualt .= $arr_chuhangchuc[$sohangchuc];
        if ($sohangchuc == 1 && $sohangdonvi == 1)
            $resualt .= ' ' . $arr_chubinhthuong[$sohangdonvi];
        elseif ($sohangchuc == 1 && $sohangdonvi > 1)
            $resualt .= ' ' . $arr_chuhangdonvi[$sohangdonvi];
        elseif ($sohangchuc > 1 && $sohangdonvi > 0)
            $resualt .= ' ' . $arr_chuhangdonvi[$sohangdonvi];

        return $resualt;
    }
    public function doc3so($so)
    {
        $resualt = '';
        $arr_chubinhthuong = array(
            'không',
            'một',
            'hai',
            'ba',
            'bốn',
            'năm',
            'sáu',
            'bảy',
            'tám',
            'chín');
        $sohangtram = substr($so, 0, 1);
        $sohangchuc = substr($so, 1, 1);
        $sohangdonvi = substr($so, 2, 1);
        $resualt = $arr_chubinhthuong[$sohangtram] . ' trăm';
        if ($sohangchuc == 0 && $sohangdonvi != 0)
            $resualt .= ' linh ' . $arr_chubinhthuong[$sohangdonvi];
        elseif ($sohangchuc != 0)
            $resualt .= ' ' . $this->doc2so($sohangchuc . $sohangdonvi);
        return $resualt;
    }

    public function doc($so)
    {
        $result = '';
        $arr_So = array(
            'ty' => '',
            'trieu' => '',
            'nghin' => '',
            'tram' => '');
        $sochuso = strlen($so);
        for ($i = $sochuso - 1; $i >= 0; $i–) {

            if ($sochuso - $i <= 3) {
                $arr_So[‘tram’] = substr($so, $i, 1) . $arr_So[‘tram’];
            } elseif ($sochuso - $i > 3 && $sochuso - $i <= 6) {
                $arr_So[‘nghin’] = substr($so, $i, 1) . $arr_So[‘nghin’];
            } elseif ($sochuso - $i > 6 && $sochuso - $i <= 9) {
                $arr_So[‘trieu’] = substr($so, $i, 1) . $arr_So[‘trieu’];
            } else {
                $arr_So[‘ty’] = substr($so, $i, 1) . $arr_So[‘ty’];
            }
        }
        if ($arr_So[‘ty’] > 0)
            $result .= $this->doc($arr_So[‘ty’]) . ' tỷ';
        if ($arr_So[‘trieu’] > 0) {
            if ($arr_So[‘trieu’] >= 100 || $arr_So[‘ty’] > 0)
                $result .= ' ' . $this->doc3so($arr_So[‘trieu’]) . ' triệu';
            elseif ($arr_So[‘trieu’] >= 10)
                $result .= ' ' . $this->doc2so($arr_So[‘trieu’]) . ' triệu';
            else
                $result .= ' ' . $this->doc1so($arr_So[‘trieu’]) . ' triệu';
        }
        if ($arr_So[‘nghin’] > 0) {
            if ($arr_So[‘nghin’] >= 100 || $arr_So[‘trieu’] > 0)
                $result .= ' ' . $this->doc3so($arr_So[‘nghin’]) . ' nghìn';
            elseif ($arr_So[‘nghin’] >= 10)
                $result .= ' ' . $this->doc2so($arr_So[‘nghin’]) . ' nghìn';
            else
                $result .= ' ' . $this->doc1so($arr_So[‘nghin’]) . ' nghìn';
        }
        if ($arr_So[‘tram’] > 0) {
            if ($arr_So[‘tram’] >= 100 || $arr_So[‘nghin’] > 0)
                $result .= ' ' . $this->doc3so($arr_So[‘tram’]);
            elseif ($arr_So[‘tram’] >= 10)
                $result .= ' ' . $this->doc2so($arr_So[‘tram’]);
            else
                $result .= ' ' . $this->doc1so($arr_So[‘tram’]);
        }

        return $result;
    }
}
?>

Ngoài ra, bạn cũng có thể trải nghiệm API để đọc số của chúng tôi ở link sau: https://api.nosomovo.xyz/convert

Hy vọng hữu ích với bạn!

Nosomovo

Chia sẻ lên
WEB5k - Thiết kế website giá rẻ chuẩn SEO

Hãy bình luận đầu tiên

Để lại một phản hồi