In article <[EMAIL PROTECTED]>, [EMAIL PROTECTED] says...
> Hi all
> How can convert number to letters in PHP?
> ( for example 254=two handres and fifty four )
> 
> Thanks for help

Here's a NumtoWords function in Pascal. I don't have one
in PHP...Maybe someone could convert it for us...<bg>

(***********************************************************************
    NumToWords( <dAmount> ) - Converts a number to its spoken value. 
        Example:

        NumToWords(234.56) 
          returns "Two Hundred Thirty-Four and 56/100ths'
***********************************************************************)
function NumToWords( dAmount: Double ): String;
var
  cString : String;
  iTemp   : LongInt;
  XX      : LongInt;
  dPow    : Double;

  function NWord( nAmount: Integer ): String;
  const
    AWords: array[1..27] of String[9] = ( 'One', 'Two', 'Three', 'Four',
                'Five', 'Six', 'Seven', 'Eight', 'Nine', 'Ten', 'Eleven',
                'Twelve', 'Thirteen', 'Fourteen', 'Fifteen', 'Sixteen',
                'Seventeen', 'Eighteen', 'Nineteen', 'Twenty', 'Thirty',
                'Forty', 'Fifty', 'Sixty', 'Seventy', 'Eighty', 'Ninety');
  var
    sTemp: String;
    nTemp: LongInt;

  begin
    sTemp := '';
    if (nAmount > 99) then 
    begin
      nTemp := nAmount div 100;
      sTemp := sTemp + AWords[nTemp] + ' Hundred';
      nAmount := nAmount - (nTemp * 100);
      if nAmount > 0 then
        sTemp := sTemp + #32;
    end; {if (nAmount > 99)}
    if ( nAmount > 0 ) and (nAmount < 20) then
      sTemp := sTemp + AWords[nAmount]
    else if ( nAmount > 19 ) then 
    begin
      nTemp := nAmount div 10;
      sTemp := sTemp + AWords[nTemp + 18];
      nAmount := nAmount - nTemp * 10;
      if (nAmount <> 0) then
        sTemp := sTemp + '-' + AWords[nAmount];
    end; {if ( nAmount > 0 ) and (nAmount < 20)}
    Result := sTemp;
  end; { Static Function NWord() }

  (*********************** Immediate IF String **************************
      IIFS(<bCond>, <sTrue>, <sFalse>) - Evaluates <bCond>.  If true, the
          string <sTrue> is returned; if false, the string <sFalse> is
          returned.
 
          Example:
              sTestResult := 'Your score was ' +
                   IIFS((passed), 'passing', 'failing');
  ***********************************************************************)
  function IIFS( bCond: Boolean; sTrue, sFalse: String): String;
  begin
    if (bCond) then
      Result := sTrue
    else
      Result := sFalse;
  end; {function IIFS()}
begin   
  cString := '';
  XX := 6;
  while (XX > -3) do 
  begin
    dPow := Pow( 10, XX );
    if (dAmount >= dPow) then 
    begin
      iTemp := Trunc(dAmount / dPow);
      cString := cString + NWord(iTemp) + IIFS( XX = 6, ' Million',
                 IIFS( XX = 3, ' Thousand', ''));
      dAmount := dAmount - (iTemp * dPow);
      if (dAmount > 0) then
        cString := cString + #32;
    end; {if (dAmount >= dPow)}
    Dec( XX, 3 );
  end; {while (XX > -3)}
  if ((dAmount - Trunc(dAmount)) > 0) then 
  begin
    iTemp := Trunc(dAmount * 100);
    cString := cString + 'and ' +
    IntToStr(iTemp) + '/100ths';
  end {if ((dAmount - Trunc(dAmount)) > 0)}
  else
      cString := cString + ' exactly';
  Result := cString;
end; {function NumToWords()}

-- 
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to