数字转英文

  <?php //___{xf_num2en}________________________________________

  //*** 說明: 數值轉英文表示法

  //=== 回傳: <string>

  //--- NN)數值  FF)小數位

  //============================================================

  function xf_num2en($NN, $FF=0) {

  //===[前置]========================================

  if (!is_numeric($NN)) return '';

  ($FF>2) and $FF=2;

  $xn='';       $xf='';

  global $enws;

  $enws=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=>"forty",50=>"fifty",

  60=>"sixty",70=>"seventy",80=>"eighty",90=>"ninety");

  //===[整數]========================================

  $nk=floor($NN);

  $cnt=0;

  while ($nk) {

  $n=$nk % 1000;

  if ($n) {

  $x=xf_enNum4($n);

  if ($cnt==1)        $xn=$x. 'thousand '. $xn;

  elseif ($cnt==2)    $xn=$x. 'million '. $xn;

  elseif ($cnt==3)    $xn=$x. 'billion '. $xn;

  elseif ($cnt==4)    $xn=$x. 'trillion '. $xn;

  else                $xn=$x;

  }

  $cnt+=1;

  $nk=floor($nk/1000);

  }     //--while

  //===[小數]========================================

  if ($FF>0) {

  $n=floor($NN*100) % 100;

  ($n) and $xf=xf_enNum4($n). 'cent';

  }

  return $xn.$xf;

  }   //--xf_num2en

  function xf_enNum4($NN) {

  global $enws;

  $ans='';

  $n=floor($NN/100);

  ($n) and $ans=$enws[$n]. ' hundred ';

  $n=$NN % 100;

  if ($n) {

  if ($n<20)  $ans.=$enws[$n]. ' ';

  else {

  $m=floor($n/10) * 10;

  $ans.=$enws[$m]. ' ';

  $n=$n % 10;

  ($n) and $ans.=$enws[$n]. ' ';

  }

  }

  return $ans;

  }   //--xf_enNum4 ?>