-
-
- /*
- 小文字の整数から中国語の大文字への変換のみをサポートします
- */
- class ChineseNumber
- {
- //var $basical=array(0=>"zero") ,"1","2","3","4","5","6","7","8","9");
- var $basical=array(0=>"ゼロ、「一」、「二」、「三」、「四」、「五」、「呂」、「旒」、「八」、「玖」);
- //var $advanced=array(1) =>"十","百","千");
- var $advanced=array(1=>"十","百","千");
- var $top=array(1=> ;"10,000","100 million");
var $level; // 4 桁を 1 レベルとして使用します
// 最初に 10,000 レベルの数値を実装しますconversion
- function small2big($number)
- {
- if ($number>999999999999) // 数千億しか処理できません。
- return "数値が大きすぎて処理できません。申し訳ありません!";
- if ($number==0)
- return "zero";
for($this->level=0) ; $number>0.0001;$this->level++,$number=floor($number / 10000))
- {
- // 中国語の場合、4 桁のグループにする必要があります。
- // 4 つの変数はそれぞれ、単位、数十、数百、数千に対応します。
- $n1=substr($number,-1,1);
- if($number>9)
- $n2=substr($number,-2,1);
- else
- $n2=0;
- if($ number>99)
- $n3=substr($number,-3,1);
- else
- $n3=0;
- if($number>999)
- $n4=substr($number,-4,1);
- else
- $n4=0;
if($n4)
- $parsed[$this->level].=$this->basical[$n4].$this- >advanced[3];
- else
- if(($number/10000)>=1) // 3000 の位は 0 で、値は 9999 より大きいです
- $parsed[$this->level].= "ゼロ ";
- if($n3)
- $parsed[$this->level].=$this->basical[$n3].$this->advanced[2];
- else
- if(! ereg( "Zero$",$parsed[$this->level]) && ($number / 1000)>=1) // 2 つ連続する "ゼロ" はありません
- $parsed[$this->レベル ].="ゼロ";
- if($n2)
- $parsed[$this->レベル].=$this->基本[$n2].$this->上級[1];
- else
- if(!ereg("zero$",$parsed[$this->level]) && ($number / 100)>=1) //2 つ連続する "ゼロ" は存在しません
- $parsed[$ this->level].="zero";
- if($n1)
- $parsed[$this->level].=$this->basical[$n1];
- }
- for($this- >level-=1;$this->level>=0;$this->level--)
- {
- $result.=$parsed[$this->level].$this->top [$this->level];
- }
if(ereg("zero$",$result))
- $result=substr($result,0,strlen($result) -2);
return $result;
- }
- };
$big=new ChineseNumber();
- echo $big->small2big( 1311);
- ?>
-
コードをコピー
|