Created
June 11, 2016 07:17
-
-
Save mahedi2014/980654ee8340e4d0587f7254558f8359 to your computer and use it in GitHub Desktop.
Convert bangla number to english and word
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<head> | |
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> | |
</head> | |
<body> | |
<?php | |
$unicodeNumber = $_GET['num']; | |
print_r( $unicodeNumber); | |
function convertToEnglishNumber($unicodeNumber){ | |
$englishNumber = mb_convert_encoding($unicodeNumber,"HTML-ENTITIES","UTF-8"); | |
$englishNumber = str_replace('০', '0', $englishNumber); | |
$englishNumber = str_replace('১', '1', $englishNumber); | |
$englishNumber = str_replace('২', '2', $englishNumber); | |
$englishNumber = str_replace('৩', '3', $englishNumber); | |
$englishNumber = str_replace('৪', '4', $englishNumber); | |
$englishNumber = str_replace('৫', '5', $englishNumber); | |
$englishNumber = str_replace('৬', '6', $englishNumber); | |
$englishNumber = str_replace('৭', '7', $englishNumber); | |
$englishNumber = str_replace('৮', '8', $englishNumber); | |
$englishNumber = str_replace('৯', '9', $englishNumber); | |
return $englishNumber; | |
} | |
function convertToBanglaNumber($englishNumber){ | |
$englishNumber = (string) $englishNumber; | |
$banglaNumber = ''; | |
$indexLimit = strlen($englishNumber); | |
for($i=0; $i<$indexLimit; $i++) { | |
switch($englishNumber[$i]) { | |
case "0": | |
$banglaNumber .= '০'; | |
break; | |
case "1": | |
$banglaNumber .= '১'; | |
break; | |
case "2": | |
$banglaNumber .= '২'; | |
break; | |
case "3": | |
$banglaNumber .= '৩'; | |
break; | |
case "4": | |
$banglaNumber .= '৪'; | |
break; | |
case "5": | |
$banglaNumber .= '৫'; | |
break; | |
case "6": | |
$banglaNumber .= '৬'; | |
break; | |
case "7": | |
$banglaNumber .= '৭'; | |
break; | |
case "8": | |
$banglaNumber .= '৮'; | |
break; | |
case "9": | |
$banglaNumber .= '৯'; | |
break; | |
default: | |
$banglaNumber .= $englishNumber[$i]; | |
break; | |
} | |
} | |
return $banglaNumber; | |
} | |
function convert_en_number_to_words($number) { | |
$hyphen = '-'; | |
$conjunction = ' and '; | |
$separator = ', '; | |
$negative = 'negative '; | |
$decimal = ' point '; | |
$dictionary = array( | |
0 => 'zero', | |
1 => 'one', | |
2 => 'two', | |
3 => 'three', | |
4 => 'four', | |
5 => 'five', | |
6 => 'six', | |
7 => 'seven', | |
8 => 'eight', | |
9 => 'nine', | |
10 => 'ten', | |
11 => 'eleven', | |
12 => 'twelve', | |
13 => 'thirteen', | |
14 => 'fourteen', | |
15 => 'fifteen', | |
16 => 'sixteen', | |
17 => 'seventeen', | |
18 => 'eighteen', | |
19 => 'nineteen', | |
20 => 'twenty', | |
30 => 'thirty', | |
40 => 'fourty', | |
50 => 'fifty', | |
60 => 'sixty', | |
70 => 'seventy', | |
80 => 'eighty', | |
90 => 'ninety', | |
100 => 'hundred', | |
1000 => 'thousand', | |
1000000 => 'million', | |
1000000000 => 'billion', | |
1000000000000 => 'trillion', | |
1000000000000000 => 'quadrillion', | |
1000000000000000000 => 'quintillion' | |
); | |
if (!is_numeric($number)) { | |
return false; | |
} | |
if (($number >= 0 && (int) $number < 0) || (int) $number < 0 - PHP_INT_MAX) { | |
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_en_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 . convert_en_number_to_words($remainder); | |
} | |
break; | |
default: | |
$baseUnit = pow(1000, floor(log($number, 1000))); | |
$numBaseUnits = (int) ($number / $baseUnit); | |
$remainder = $number % $baseUnit; | |
$string = convert_en_number_to_words($numBaseUnits) . ' ' . $dictionary[$baseUnit]; | |
if ($remainder) { | |
$string .= $remainder < 100 ? $conjunction : $separator; | |
$string .= convert_en_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; | |
} | |
//uses | |
echo $eng = convertToEnglishNumber($unicodeNumber); | |
echo convert_en_number_to_words($eng); | |
echo $bn = convertToBanglaNumber($eng); | |
?> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Great Job !!