[PHP-users 26759] Re: ' 百二十三 ' -> 123
abe_i
abe_i @ yamagishi.or.jp
2005年 9月 4日 (日) 16:35:07 JST
阿部といいます。
思いつきですので、バグもあるかもしれません、その辺はご勘弁を。
アイデアとしてみてください。
またevalを使っていますので、セキュリティ面は別途、考慮してください。
以下が関数です。
function waToArabic($str) {
$wa = array('兆', '億', '万', '千', '百', '十', '九', '八',
'七', '六', '五', '四', '三', '二', '一');
$arabic = array(',1000000000000,', ',100000000,', ',10000,',
'*1000', '*100', '*10', '+9', '+8', '+7', '+6',
'+5', '+4', '+3', '+2', '+1');
$val = explode(',', str_replace($wa, $arabic, $str));
$ret = 0;
$sub = 0;
foreach($val as $unit) {
if ($unit == '') continue;
if (ereg('[^0-1]', $unit)) {
$unit = (substr($unit, 0 ,1) == "*" ? $unit = 1 . $unit : $unit);
$unit = str_replace('0*', '0+1*', $unit);
eval('$sub +=' . $unit . ';');
}else{
$sub = $sub == 0 ? $unit : $sub * $unit;
$ret += $sub;
$sub = 0;
}
}
return $ret + $sub;
}
> 高本といいます。
>
> 例えば、'百二十三'を 123 というように
> 漢数字を数値に変換したいのですが、
> 一番ステキな方法は何でしょうか?
--
<abe_i @ yamagishi.or.jp>
PHP-users メーリングリストの案内