感谢您的到来。有什么意见或建议。点击这里吐槽一下,不吐不为快!

PHP方法:人民币金额转大写

PHP开发 梁坤 1163人阅读 0评论
人民币大写

人民币大写


//PHP人民币金额转大写
class Ext_Num2Cny{ 
  static $basical = array(0=>"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"); 
  static $advanced=array(1=>"拾","佰","仟"); 
 
  public static function ParseNumber($number){ 
    $number=trim($number); 
    if ($number>999999999999) return "数字太大,无法处理。抱歉!"; 
    if ($number==0) return "零"; 
    // var_dump(strpos($number,'.'));  

    if(strpos($number,'.')){ 
      $number=round($number,2); 
      $data=explode(".",$number); 
      // var_dump($data);
      $data[0]=self::int($data[0]); 
      $data[1]=self::dec($data[1]); 
      return $data[0].$data[1]; 
    }else{ 
      return self::int($number).'整'; 
    } 
  } 
 
  public static function int($number){ 
    $arr=array_reverse(str_split($number)); 
    // var_dump($arr);

    $data=''; 
    $zero=false; 
    $zero_num=0; 
    foreach ($arr as $k=>$v){ 
      $_chinese=''; 
      $zero=($v==0)?true:false; 
      $x=$k%4; 
      //var_dump($k,$v,$x,'<hr/>');

      if($x && $zero && $zero_num>1)continue; 
      switch ($x){ 
        case 0: 
          if($zero){ 
            $zero_num=0; 
          }else{ 
            $_chinese=self::$basical[$v]; 
            $zero_num=1; 
          } 
          if($k==8){ 
            $_chinese.='亿'; 
          }elseif($k==4){ 
            $_chinese.='万'; 
          } 
          break;   
        default: 
          if($zero){ 
            if($zero_num==1){ 
              $_chinese=self::$basical[$v]; 
              $zero_num++; 
            } 
          }else{ 
            $_chinese=self::$basical[$v]; 
            $_chinese.=self::$advanced[$x]; 
          } 
      } 
      $data=$_chinese.$data; 
     // var_dump($data);

    } 
    return $data.'元'; 
  } 
   
  public static function dec($number){ 
    // var_dump($number);
    if(strlen($number)<2) $number.='0'; 
    // var_dump($number);
    $arr=array_reverse(str_split($number)); 
    // var_dump($arr);
    $data=''; 
    $zero_num=false; 
    foreach ($arr as $k=>$v){ 
      $zero=($v==0)?true:false; 
      $_chinese=''; 
      if($k==0){ 
        if(!$zero){ 
          $_chinese=self::$basical[$v]; 
          $_chinese.='分'; 
          $zero_num=true; 
        } 
      }else{ 
        if($zero){ 
          if($zero_num){ 
            $_chinese=self::$basical[$v]; 
          } 
        }else{ 
          $_chinese=self::$basical[$v]; 
          $_chinese.='角'; 
        } 
      } 
      $data=$_chinese.$data; 
    } 
    return $data; 
  } 

} 
//使用方法
$nun = new Ext_Num2Cny(); 

$rmb = '1234567.123';

echo "您输入的钱数是¥".$rmb . "<br/>";
echo Ext_Num2Cny::ParseNumber($rmb); 

输出出来的结果为:

您输入的钱数是¥1234567.123
壹佰贰拾叁万肆仟伍佰陆拾柒元壹角贰分

人民币

人民币

如需转载,请注明文章出处和来源网址:

【PHP方法:人民币金额转大写】http://www.liangkun.net/344.html

喜欢 (0)or 分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址