Đọc số: chuyển từ số nguyên sang đọc bằng chữ (tiếng Việt)
67: sáu mươi bảy
1234007: một triệu hai trăm ba mươi bốn nghìn không trăm lẻ bảy
1234065: một triệu hai trăm ba mươi bốn nghìn không trăm sáu mươi lăm
1234505: một triệu hai trăm ba mươi bốn nghìn năm trăm linh năm
1234501: một triệu hai trăm ba mươi bốn nghìn năm trăm lẻ một
51534001: năm mươi mốt triệu năm trăm ba mươi bốn nghìn không trăm lẻ một
51000001: năm mươi mốt triệu không trăm lẻ một
51000005: năm mươi mốt triệu không trăm linh năm
120021120: một trăm hai mươi triệu không trăm hai mươi mốt nghìn một trăm hai mươi
<?php
class Docso
{
private static function doc3so($so)
{
$achu = array(" không ", " một ", " hai ", " ba ", " bốn ", " năm ", " sáu ", " bảy ", " tám ", " chín ");
$aso = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
$kq = "";
$tram = floor($so / 100); // Hàng trăm
$chuc = floor(($so / 10) % 10); // Hàng chục
$donvi = floor(($so % 10)); // Hàng đơn vị
if ($tram == 0 && $chuc == 0 && $donvi == 0) $kq = "";
if ($tram != 0) {
$kq .= $achu[$tram] . "trăm";
if (($chuc == 0))
{
if ($donvi == 5 || $donvi == 6)
$kq .= " linh";
elseif ($donvi != 0)
$kq .= " lẻ";
}
}
if (($chuc != 0) && ($chuc != 1)) {
$kq .= $achu[$chuc] . "mươi";
}
if ($chuc == 1) $kq .= " mười";
switch ($donvi) {
case 1:
if (($chuc != 0) && ($chuc != 1)) {
$kq .= " mốt ";
} else {
$kq .= $achu[$donvi];
}
break;
case 5:
if ($chuc == 0) {
$kq .= $achu[$donvi];
} else {
$kq .= " lăm";
}
break;
default:
if ($donvi != 0) {
$kq .= $achu[$donvi];
}
break;
}
return trim($kq);
}
public static function doc_so($so)
{
$so = preg_replace("([a-zA-Z{!@#$%^&*()_+<>?,.}]*)", "", $so);
if (strlen($so) <= 21) {
$kq = "";
$c = 0;
$d = 0;
$tien = array("", " nghìn", " triệu", " tỷ", " nghìn tỷ", " triệu tỷ", " tỷ tỷ");
for ($i = 0; $i < strlen($so); $i++) {
if ($so[$i] == "0")
$d++;
else break;
}
$so = substr($so, $d);
for ($i = strlen($so); $i > 0; $i -= 3) {
$a[$c] = substr($so, $i, 3);
$so = substr($so, 0, $i);
$c++;
}
$a[$c] = $so;
for ($i = count($a); $i > 0; $i--) {
if (!empty($a[$i]) && strlen(trim($a[$i])) != 0) {
if (self::doc3so($a[$i]) != "") {
if (($tien[$i - 1] == "")) {
if (count($a) > 2)
{
if (intval($a[$i]) < 10)
{
if (intval($a[$i]) == 5)
$kq .= " không trăm linh " . self::doc3so($a[$i]) . $tien[$i - 1];
else
$kq .= " không trăm lẻ " . self::doc3so($a[$i]) . $tien[$i - 1];
}
elseif (intval($a[$i]) < 100)
$kq .= " không trăm " . self::doc3so($a[$i]) . $tien[$i - 1];
else $kq .= ' ' . self::doc3so($a[$i]) . $tien[$i - 1];
}
else $kq .= self::doc3so($a[$i]) . $tien[$i - 1];
} else if ((trim(self::doc3so($a[$i])) == "mười") && ($tien[$i - 1] == "")) {
if (intval($a[$i]) < 100)
$kq .= " không trăm " . doc3so($a[$i]) . $tien[$i - 1];
else $kq .= ' ' . self::doc3so($a[$i]) . $tien[$i - 1];
} else {
if (!empty($kq))
{
if (intval($a[$i]) < 10)
{
if (intval($a[$i]) == 5)
$kq .= " không trăm linh " . self::doc3so($a[$i]) . $tien[$i - 1];
else
$kq .= " không trăm lẻ " . self::doc3so($a[$i]) . $tien[$i - 1];
}
elseif (intval($a[$i]) < 100)
$kq .= " không trăm " . self::doc3so($a[$i]) . $tien[$i - 1];
else $kq .= ' ' . self::doc3so($a[$i]) . $tien[$i - 1];
}
else $kq .= self::doc3so($a[$i]) . $tien[$i - 1];
}
}
}
}
return $kq;
} else {
return "Số quá lớn!";
}
}
}
$so = 67;
echo $so . ": " . Docso::doc_so($so);
echo "\n";
$so = 1234007;
echo $so . ": " . Docso::doc_so($so);
echo "\n";
$so = 1234065;
echo $so . ": " . Docso::doc_so($so);
echo "\n";
$so = 1234505;
echo $so . ": " . Docso::doc_so($so);
echo "\n";
$so = 1234501;
echo $so . ": " . Docso::doc_so($so);
echo "\n";
$so = 51534001;
echo $so . ": " . Docso::doc_so($so);
echo "\n";
$so = 51000001;
echo $so . ": " . Docso::doc_so($so);
echo "\n";
$so = 51000005;
echo $so . ": " . Docso::doc_so($so);
echo "\n";
$so = 120021120;
echo $so . ": " . Docso::doc_so($so);
echo "\n";

Dù đây chỉ là blogs cá nhân nhưng chúng tôi rất sẵn lòng đón nhận những đóng góp của bạn bè, người thân, và bất cứ ai ghé thăm.