[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 メーリングリストの案内