Hàm đổi tiền thành chữ php

Mình hiện đang làm vài trang rao vặt cho khách hàng, cũng vì nhu cầu cần phải biến đổi các số to đùng sang chữ cho nó ngắn lại / để dễ hiểu hơn, website bất động sản thì số to thôi rồi 😀

Test hàm đọc số tiền

Vì chưa thấy thiên hạ chia sẻ hàm để làm việc này nên tôi phải tự làm, cũng được chả sao, mất toi 1 tiếng lọ mọ cơ mà thú vị, cuối cùng thì tìm được cách tối ưu nhất để đọc cái chuỗi số ấy ra ngoài !

Bước 1: Format lại số

Đầu tiên, ta cho số 32000000000 [ đọc là 32 tỉ ], sau đó ta dùng hàm number_format để băm nó thành nhóm 3 số 1 , ta được 32,000,000,000 => Ngon dần đều

Bước 2: Băm nát dãy số = 3 số một

Dùng hàm sau: explode [‘,’, $num]; ta được:

array {
    [0] => 32,
    [1] => 000,
    [2] => 000,
    [3] => 000,
}

Haha, ngon dần rồi đấy, có cơ sở để đọc nó, giờ ta tính dùng hàm Count để có thể đếm xem nó là số tỉ hay triệu, ta chỉ cần: count[ $array ];

Bước 3: Đọc nó

Nếu có 4 array, thì đọc “$array[0]” tỉ, nếu $array[1] đọc tiếp “triệu”, còn lại thích đọc tiếp thì đọc !

Nếu có 3 array, thì đọc “$array[0]” triệu, nếu $array[1] đọc tiếp “ngàn”, còn lại thích đọc tiếp thì đọc !

Sau đây là toàn bộ code, các bạn thích thì lấy về mà dùng cho đỡ mất công viết mới:

function jam_read_num_forvietnamese[ $num = false ] {
    $str = '';
    $num  = trim[$num];
    
    $arr = str_split[$num];
    $count = count[ $arr ];
    
    $f = number_format[$num];
       //KHÔNG ĐỌC BẤT KÌ SỐ NÀO NHỎ DƯỚI 999 ngàn
    if [ $count < 7 ] {
        $str = $num;
    } else {
        // từ 6 số trở lên là triệu, ta sẽ đọc nó !
        // "32,000,000,000"
        $r = explode[',', $f];
        switch [ count [ $r ] ] {
            case 4:
                $str = $r[0] . ' tỉ';
                if [ [int] $r[1] ] { $str .= ' '. $r[1] . ' Tr'; }
            break;
            case 3:
                $str = $r[0] . ' Triệu';
                if [ [int] $r[1] ] { $str .= ' '. $r[1] . 'K'; }
            break;
        }
    }
    return [ $str . ' ₫' ];
}

Chúc các bạn thành công !

Hôm nay, mình xin chia sẽ cho các bạn đoạn code đổi số thành chữ Việt Nam trong PHP. Bạn có thể ứng dụng đoạn code đọc để đọc số tiền của Việt Nam, để xuất ra report cho đơn hàng...

Ví dụ: 15.000 => Mười lăm ngàn 

315.258 => Ba trăm mười lăm ngàn hai trăm năm mươi tám.

function convert_number_to_words[$number] {
		$hyphen      = ' ';
		$conjunction = '  ';
		$separator   = ' ';
		$negative    = 'âm ';
		$decimal     = ' phẩy ';
		$dictionary  = array[
		0                   => 'không',
		1                   => 'một',
		2                   => 'hai',
		3                   => 'ba',
		4                   => 'bốn',
		5                   => 'năm',
		6                   => 'sáu',
		7                   => 'bảy',
		8                   => 'tám',
		9                   => 'chín',
		10                  => 'mười',
		11                  => 'mười một',
		12                  => 'mười hai',
		13                  => 'mười ba',
		14                  => 'mười bốn',
		15                  => 'mười năm',
		16                  => 'mười sáu',
		17                  => 'mười bảy',
		18                  => 'mười tám',
		19                  => 'mười chín',
		20                  => 'hai mươi',
		30                  => 'ba mươi',
		40                  => 'bốn mươi',
		50                  => 'năm mươi',
		60                  => 'sáu mươi',
		70                  => 'bảy mươi',
		80                  => 'tám mươi',
		90                  => 'chín mươi',
		100                 => 'trăm',
		1000                => 'nghìn',
		1000000             => 'triệu',
		1000000000          => 'tỷ',
		1000000000000       => 'nghìn tỷ',
		1000000000000000    => 'nghìn triệu triệu',
		1000000000000000000 => 'tỷ tỷ'
		];
	if [!is_numeric[$number]] {
		return false;
	}
	if [[$number >= 0 && [int] $number < 0] || [int] $number < 0 - PHP_INT_MAX] {
		// overflow
		trigger_error[
		'convert_number_to_words only accepts numbers between -' . PHP_INT_MAX . ' and ' . PHP_INT_MAX,
		E_USER_WARNING
		];
		return false;
	}
	if [$number < 0] {
		return $negative . convert_number_to_words[abs[$number]];
	}
	$string = $fraction = null;
		if [strpos[$number, '.'] !== false] {
		list[$number, $fraction] = explode['.', $number];
	}
	switch [true] {
	case $number < 21:
		$string = $dictionary[$number];
	break;
	case $number < 100:
		$tens   = [[int] [$number / 10]] * 10;
		$units  = $number % 10;
		$string = $dictionary[$tens];
		if [$units] {
			$string .= $hyphen . $dictionary[$units];
		}
	break;
	case $number < 1000:
		$hundreds  = $number / 100;
		$remainder = $number % 100;
		$string = $dictionary[$hundreds] . ' ' . $dictionary[100];
		if [$remainder] {
			$string .= $conjunction . $this->convert_number_to_words[$remainder];
		}
	break;
	default:
		$baseUnit = pow[1000, floor[log[$number, 1000]]];
		$numBaseUnits = [int] [$number / $baseUnit];
		$remainder = $number % $baseUnit;
		$string = $this->convert_number_to_words[$numBaseUnits] . ' ' . $dictionary[$baseUnit];
		if [$remainder] {
			$string .= $remainder < 100 ? $conjunction : $separator;
			$string .= $this->convert_number_to_words[$remainder];
		}
		break;
	}
	if [null !== $fraction && is_numeric[$fraction]] {
		$string .= $decimal;
		$words = array[];
		foreach [str_split[[string] $fraction] as $number] {
			$words[] = $dictionary[$number];
		}
		$string .= implode[' ', $words];
	}
		return $string;
}

- Đoạn code này cũng rất dễ hiểu các bạn có thể tùy biến theo ý của mình. 

Chúc các bạn thành công!

THÔNG TIN TÁC GIẢ

Founder 1132 bài viết 9,576,131

NGUYỄN THẢO

Founder at LaptrinhVB.net

★★★★★

♥ Tình yêu thương chẳng hề hư mất bao giờ. [Cr 13,4]

=========================================================================

My skills includes .NET[C#, VB.NET], DevExpress, Java, Android, PHP,

Python, Sqlserver, Mysql, Reactjs, Dart, Flutter, API services and lot more...

Phone/Zalo/Telegram/WhatsApp: +84.933.913.122

Email: 

Facebook: //fb.com/Lewandowski28031988

Youtube Channel: //www.youtube.com/c/CTutorialsTips

 

Buy me a cup of beer

       

=========================================================================

BÀI VIẾT LIÊN QUAN

Đăng bởi: Thảo meo - Lượt xem: 12521 10:43:06, 16/08/2016THIẾT KẾ WEB

Chủ Đề