デジタル変換中国語

WBOY
WBOYオリジナル
2016-07-25 09:05:581033ブラウズ
  1. class TransFormNumber{
  2. public $chinaData = array('1'=>'壹','2'=>'二','3'=>'三', '4'=>'Si'、'5'=>'Wu'、'6'=>'Lu'、'7'=>'Qi'、'8'=>'Eight'、 '9'=>'玖');
  3. public $chinaDataInt = array('1'=>'元','2'=>'市','3'=>'百','4 '=>'銭','5'=>'万','6'=>'士','7'=>'百','8'=>'銭',' 9 '=>'10 億'、'10'=>'Shi'、'11'=>'百'、'12'=>'銭'、'13'=>'万') ;
  4. public $chinaDataFloat = array('1'=>'angle','2'=>'fen');
  5. private $Intnumber; // string
  6. private $Floatnumber; // string
  7. public $error = array( '0'=>'zero','def'=>'データ形式はサポートされていません');
  8. public function __construct($intnumber,$floatnumber){
  9. $this->Intnumber = $intnumber;
  10. $ this->Floatnumber = $floatnumber;
  11. }
  12. /*13 桁の整数*/
  13. public function getTransInt(){
  14. $this->Intnumber = intval($this->Intnumber);
  15. $len = strlen( $this->Intnumber);
  16. if($len > 13){
  17. return $this->error Notice(1);
  18. }
  19. if($this->Intnumber == 0){
  20. return $this ->error Notice('def');
  21. }
  22. $intData = strrev(substr($this->Intnumber,0,$len));
  23. $data = $this->setTransInt($intData ,$len );
  24. krsort($data);
  25. $str = rtrim(join($data,''),'zero');
  26. if(substr($this->Intnumber,$len-1,1 ) == 0){
  27. $str.='元';
  28. }
  29. unset($data);
  30. return $str;
  31. }
  32. public function getTransFloat(){
  33. return $this->setTransFloat($this- >Floatnumber ,strlen($this->Floatnumber));
  34. }
  35. プライベート関数 setTransInt($intData,$pos){
  36. for($i=0;$i $oneData = substr( $intData,$i,1);
  37. if(($i == 4 || ($i%8) == 4) && $oneData == 0){
  38. if(substr($intData,$ i+1 ,1) == 0 && substr($intData,$i+2,1) == 0 && substr($intData,$i+3,1) == 0){
  39. if(substr($intData) ,$i -1,1) == 0){
  40. 続行;
  41. }else{
  42. $data[] = 'zero';
  43. }
  44. }else{
  45. $data[] = '10,000';
  46. 続行;
  47. }
  48. 続行 ;
  49. }
  50. if($i%8 == 0 && $i != 0 && $oneData == 0){
  51. $data[] = '1億';
  52. }
  53. if($oneData == 0){
  54. if(($i == 4 || $i == 7)){
  55. if((substr($intData,$i-1,1) ==0)){
  56. continue;
  57. }else {
  58. $data [] = 'zero';
  59. }
  60. }else{
  61. if(substr($intData,$i-1,1) !=0 && $i !=3 && $i != 8){
  62. $data[] = 'zero';
  63. }else{
  64. if($i == 3 && substr($intData,$i,1) == 0 && substr($intData,$i-1,1) != 0){
  65. $data[] = 'zero';
  66. }
  67. }
  68. }
  69. }else{
  70. $data[] = $this->chinaData[$oneData].$this->chinaDataInt[$i+ 1];
  71. }
  72. }
  73. unset($intData,$oneData,$i);
  74. return $data;
  75. }
  76. //小数点以下 2 桁を厳密にサポート
  77. プライベート関数 setTransFloat($floatData,$pos){
  78. if ($pos > ; 2){
  79. return $this->error Notice('def');
  80. }
  81. if($floatData{0} == 0){
  82. $data[] = 'zero';
  83. }else {
  84. $data [] = $this->chinaData[$floatData{0}].$this->chinaDataFloat[1];
  85. }
  86. if($floatDataBB媪!= 0 ){
  87. $data[] = $this-> ;chinaData[$floatDataBB媪].$this->chinaDataFloat[2];
  88. }
  89. return implode('',$data);
  90. }
  91. public function error Notice($error){
  92. return $this ->error [$error];
  93. }
  94. }
  95. $num = new TransFormNumber('100228030','80');
  96. echo $num->getTransInt();
  97. echo $num->getTransFloat( );
コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。