数字を漢字に変換するには
自分で書きました
- 関数番号2 Chinese($num, $m = 1) {
- switch($m) {
- case 0:
- $CNum = array(
- array('zero','壹','二','三','四','五','鲁','旒','捌','玖'),
- array('','十','百','千'),
- array(' ','百万','十億','兆')
- );
- ブレーク;
- デフォルト:
- $CNum = array(
- array('zero','one','two','three',' four ','five','six','seven','eight','nine'),
- array('','ten','hundred','thousand'),
- array('',' ワン','billion','trillion')
- );
- Break;
- }
-
- // $cNum = array('zero','one','two','three','four',' four' ,'6','7','8','9');
-
- if (is_integer($num)) {
- $int = (string)$num;
- } else if (is_numeric($num )) {
- $num =explode('.', (string)floatval($num));
- $int = $num[0];
- $fl = isset($num[1]) : FALSE;
- }
-
- // 長さ
- $len = strlen($int);
-
- // 中国語
- $chinese = array();
-
- // 逆数
- $str = strrev($int );
-
- for($i = 0; $i $s = array(0=>$str[$i], 1=>$str[$i+ 1 ], 2= >$str[$i+2], 3=>$str[$i+3]);
-
- $j = '';
- // 千の位
- if ($s[3 ] !== ' ') {
- $s[3] = (int) $s[3];
- if ($s[3] !== 0) {
- $j .= $CNum[0][$ s [3]] .$CNum[1][3];
- } else {
- if ($s[2] != 0 || $s[1] != 0 || $s[0]!=0 ) {
- $j .= $CNum[0][0];
- }
- }
- }
- // 百の位
- if ($s[2] !== '') {
- $s[2] = ( int ) $s[ 2];
- if ($s[2] !== 0) {
- $j .= $CNum[0][$s[2]].$CNum[1][2];
- } else {
- if ($s[3]!=0 && ($s[1] != 0 || $s[0]!=0) ) {
- $j .= $CNum[0][0]
- }
- }
- }
- // 十の位
- if ($s[1] !== '') {
- $s[1] = (int) $s[1];
- if ($s[1 ] !== 0 ) {
- $j .= $CNum[0][$s[1]].$CNum[1][1];
- } else {
- if ($s[0]!=0 && $ s[2] != 0) {
- $j .= $CNum[0][$s[1]];
- }
- }
- }
- // 単位桁
- if ($s[0] !== ' ') {
- $s[0] = (int) $s[0];
- if ($s[0] !== 0) {
- $j .= $CNum[0][$s[0] ] .$CNum[ 1][0];
- } else {
-
- // $j .= $CNum[0][0];
-
- }
- }
-
- $j.=$CNum[2][$ i /4];
- array_unshift($chinese, $j);
- }
-
- $chs = implode('', $chinese);
-
- if ($fl) {
- $chs .= 'point';
- for ( $i=0 ,$j=strlen($fl); $i<$j; $i++) {
- $t = (int)$fl[$i];
- $chs.= $str[0][ $t];
- }
- }
-
- return $chs;
- }
コードをコピー - 関数番号2 Chinese($num, $m = 1) {
- switch($m) {
- case 0:
- $CNum = array(
- array('zero','壹','二','三','四','五','鲁','旒','捌','玖'),
- array('','十','百','千'),
- array(' ','百万','十億','兆')
- );
- ブレーク;
- デフォルト:
- $CNum = array(
- array('zero','one','two','three',' four ','five','six','seven','eight','nine'),
- array('','ten','hundred','thousand'),
- array('',' ワン','billion','trillion')
- );
- Break;
- }
-
- // $cNum = array('zero','one','two','three','four',' four' ,'6','7','8','9');
- if (is_integer($num)) {
- $int = (string)$num;
- } else if (is_numeric($num )) {
- $num =explode('.', (string)floatval($num));
- $int = $num[0];
- $fl = isset($num[1]) : FALSE;
- }
-
- // 長さ
- $len = strlen($int);
-
- // 中国語
- $chinese = array();
- // 逆数
- $str = strrev($int );
-
- for($i = 0; $i<$len; $i+=4 ) {
- $s = array(0=>$str[$i], 1=>$str[$i+ 1 ], 2= >$str[$i+2], 3=>$str[$i+3]);
-
- $j = '';
- // 千の位
- if ($s[3 ] !== ' ') {
- $s[3] = (int) $s[3];
- if ($s[3] !== 0) {
- $j .= $CNum[0][$ s [3]] .$CNum[1][3];
- } else {
- if ($s[2] != 0 || $s[1] != 0 || $s[0]!=0 ) {
- $j .= $CNum[0][0];
- }
- }
- }
- // 百の位
- if ($s[2] !== '') {
- $s[2] = ( int ) $s[ 2];
- if ($s[2] !== 0) {
- $j .= $CNum[0][$s[2]].$CNum[1][2];
- } else {
- if ($s[3]!=0 && ($s[1] != 0 || $s[0]!=0) ) {
- $j .= $CNum[0][0]
- }
- }
- }
- // 十の位
- if ($s[1] !== '') {
- $s[1] = (int) $s[1];
- if ($s[1 ] !== 0 ) {
- $j .= $CNum[0][$s[1]].$CNum[1][1];
- } else {
- if ($s[0]!=0 && $ s[2] != 0) {
- $j .= $CNum[0][$s[1]];
- }
- }
- }
- // 単位桁
- if ($s[0] !== ' ') {
- $s[0] = (int) $s[0];
- if ($s[0] !== 0) {
- $j .= $CNum[0][$s[0] ] .$CNum[ 1][0];
- } else {
-
- // $j .= $CNum[0][0];
-
- }
- }
-
- $j.=$CNum[2][$ i /4];
- array_unshift($chinese, $j);
- }
-
- $chs = implode('', $chinese);
-
- if ($fl) {
- $chs .= 'point';
- for ( $i=0 ,$j=strlen($fl); $i<$j; $i++) {
- $t = (int)$fl[$i];
- $chs.= $str[0][ $t];
- }
- }
-
- return $chs;
- }
コードをコピー
|