Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there an easy way to convert a number to a word in PHP?

Tags:

php

numbers

In PHP, is there an easy way to convert a number to a word? For instance, 27 to twenty-seven.

like image 945
Philip Morton Avatar asked Nov 10 '08 10:11

Philip Morton


People also ask

How do I convert a number to a string in PHP?

You can simply use type casting or the strval() function to convert an integer to a string in PHP.

How do I convert numbers to word in HTML?

var words = toWords(num); To get a number converted to words you just need to call the function passing it the number you want to convert and the corresponding words will be returned.


1 Answers

I found some (2007/2008) source-code online and as it is copyright but I can use it freely and modify it however I want, so I place it here and re-license under CC-Wiki:

<?php /**  * English Number Converter - Collection of PHP functions to convert a number  *                            into English text.  *  * This exact code is licensed under CC-Wiki on Stackoverflow.  * http://creativecommons.org/licenses/by-sa/3.0/  *  * @link     http://stackoverflow.com/q/277569/367456  * @question Is there an easy way to convert a number to a word in PHP?  *  * This file incorporates work covered by the following copyright and  * permission notice:  *  *   Copyright 2007-2008 Brenton Fletcher. http://bloople.net/num2text  *   You can use this freely and modify it however you want.  */  function convertNumber($number) {     list($integer, $fraction) = explode(".", (string) $number);      $output = "";      if ($integer{0} == "-")     {         $output = "negative ";         $integer    = ltrim($integer, "-");     }     else if ($integer{0} == "+")     {         $output = "positive ";         $integer    = ltrim($integer, "+");     }      if ($integer{0} == "0")     {         $output .= "zero";     }     else     {         $integer = str_pad($integer, 36, "0", STR_PAD_LEFT);         $group   = rtrim(chunk_split($integer, 3, " "), " ");         $groups  = explode(" ", $group);          $groups2 = array();         foreach ($groups as $g)         {             $groups2[] = convertThreeDigit($g{0}, $g{1}, $g{2});         }          for ($z = 0; $z < count($groups2); $z++)         {             if ($groups2[$z] != "")             {                 $output .= $groups2[$z] . convertGroup(11 - $z) . (                         $z < 11                         && !array_search('', array_slice($groups2, $z + 1, -1))                         && $groups2[11] != ''                         && $groups[11]{0} == '0'                             ? " and "                             : ", "                     );             }         }          $output = rtrim($output, ", ");     }      if ($fraction > 0)     {         $output .= " point";         for ($i = 0; $i < strlen($fraction); $i++)         {             $output .= " " . convertDigit($fraction{$i});         }     }      return $output; }  function convertGroup($index) {     switch ($index)     {         case 11:             return " decillion";         case 10:             return " nonillion";         case 9:             return " octillion";         case 8:             return " septillion";         case 7:             return " sextillion";         case 6:             return " quintrillion";         case 5:             return " quadrillion";         case 4:             return " trillion";         case 3:             return " billion";         case 2:             return " million";         case 1:             return " thousand";         case 0:             return "";     } }  function convertThreeDigit($digit1, $digit2, $digit3) {     $buffer = "";      if ($digit1 == "0" && $digit2 == "0" && $digit3 == "0")     {         return "";     }      if ($digit1 != "0")     {         $buffer .= convertDigit($digit1) . " hundred";         if ($digit2 != "0" || $digit3 != "0")         {             $buffer .= " and ";         }     }      if ($digit2 != "0")     {         $buffer .= convertTwoDigit($digit2, $digit3);     }     else if ($digit3 != "0")     {         $buffer .= convertDigit($digit3);     }      return $buffer; }  function convertTwoDigit($digit1, $digit2) {     if ($digit2 == "0")     {         switch ($digit1)         {             case "1":                 return "ten";             case "2":                 return "twenty";             case "3":                 return "thirty";             case "4":                 return "forty";             case "5":                 return "fifty";             case "6":                 return "sixty";             case "7":                 return "seventy";             case "8":                 return "eighty";             case "9":                 return "ninety";         }     } else if ($digit1 == "1")     {         switch ($digit2)         {             case "1":                 return "eleven";             case "2":                 return "twelve";             case "3":                 return "thirteen";             case "4":                 return "fourteen";             case "5":                 return "fifteen";             case "6":                 return "sixteen";             case "7":                 return "seventeen";             case "8":                 return "eighteen";             case "9":                 return "nineteen";         }     } else     {         $temp = convertDigit($digit2);         switch ($digit1)         {             case "2":                 return "twenty-$temp";             case "3":                 return "thirty-$temp";             case "4":                 return "forty-$temp";             case "5":                 return "fifty-$temp";             case "6":                 return "sixty-$temp";             case "7":                 return "seventy-$temp";             case "8":                 return "eighty-$temp";             case "9":                 return "ninety-$temp";         }     } }  function convertDigit($digit) {     switch ($digit)     {         case "0":             return "zero";         case "1":             return "one";         case "2":             return "two";         case "3":             return "three";         case "4":             return "four";         case "5":             return "five";         case "6":             return "six";         case "7":             return "seven";         case "8":             return "eight";         case "9":             return "nine";     } } 
like image 197
Chris Avatar answered Nov 02 '22 05:11

Chris