[PHP-users 26757] Re: ' 百二十三 ' -> 123

Noguchi Takashi noguchi @ EditNet.co.jp
2005年 9月 4日 (日) 15:02:24 JST


 一番素敵とは間違っても言えない方法ですが,私が過去に(php3で)作ったのを
送ります(末尾).テキトーに使ってください.
 一応動いていたと思うのですが,とにかくそれだけです.
 (0〜9のところなどはもっときれいに書けるのでしょうが,面倒なのでコピ
ペで10回...)

 もともと,郵便の住所から番地の数字部分を抽出する目的なので,お望みの仕
様とは異なる可能性があります.
 ・億の桁には対応していません.
 ・「百二十三」も,「一ニ三」も「123」になります.

On Sun, 04 Sep 2005 11:45:41 +0900
ハートウェア 高本 <takamoto @ heartware.jp> wrote:
> 高本といいます。
> 
> 例えば、'百二十三'を 123 というように
> 漢数字を数値に変換したいのですが、
> 一番ステキな方法は何でしょうか?
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3


function kan2num($tc){
	$r1=0;
	$r2=0;
	if (!$tc) return "";
	for($i=0;$i<mbsr1len($tc);$i++){
		$tct=mbsubsr1($tc,$i,1);
		if ($tct=="〇") {
			$r2=$r2*10;
		}elseif ($tct=="一"){
			$r2=$r2*10+1;
		}elseif ($tct=="二"){
			$r2=$r2*10+2;
		}elseif ($tct=="三"){
			$r2=$r2*10+3;
		}elseif ($tct=="四"){
			$r2=$r2*10+4;
		}elseif ($tct=="五"){
			$r2=$r2*10+5;
		}elseif ($tct=="六"){
			$r2=$r2*10+6;
		}elseif ($tct=="七"){
			$r2=$r2*10+7;
		}elseif ($tct=="八"){
			$r2=$r2*10+8;
		}elseif ($tct=="九"){
			$r2=$r2*10+9;
		}elseif ($tct=="十") {
			if (!$r2) $r2=1;
			$r1+=($r2*10);
			$r2=0;
		}elseif ($tct=="百") {
			if (!$r2) $r2=1;
			$r1+=($r2*100);
			$r2=0;
		}elseif ($tct=="千") {
			if (!$r2) $r2=1;
			$r1+=($r2*1000);
			$r2=0;
		}elseif ($tct=="万") {
			if ( ($r2+$r1)==0 ) $r2=1;
			$r3+= (($r2+$r1) *10000);
			$r2=0; $r1=0;
		}else{
			if ( ($r1>0)||($r2>0)||($r3>0)) break;
		}
	}
	$kekka=$r3+$r2+$r1;
	return $kekka;
}


--------------------------------------------
 野口 尚志@EditNet株式会社
  noguchi @ EditNet.co.jp     http://www.EditNet.co.jp/
  (NOGUCHI Takashi @ EditNet, Incorporated, Tokyo)
-------------------------------------------- 
 弊社は,電力消費の100%を風力でまかなっています。
 http://www.EditNet.co.jp/eco-wind.htm
--------------------------------------------



PHP-users メーリングリストの案内