本文主要是介绍汉字转整型数字,如:三百八十六 转成 386,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
处理用户汉字数据,将之转化为阿拉伯数字
test();/*** 测试*/
function test() {echo CnToInt('一'); // 1echo CnToInt('十'); // 10echo CnToInt('十一'); // 11echo CnToInt('一百一十'); // 110echo CnToInt('一千零一'); // 1001echo CnToInt('一万零一百零一'); // 10101echo CnToInt('一亿一千三百万零三千零一'); // 113003001echo CnToInt('一千万亿'); // 11.0E+15
}/*** 中文转数字* @param String $var 需要解析的中文数* @param Int $start 初始值* @return int*/
function CnToInt($var, $start = 0) {if (is_numeric($var)) {return $var;}if (intval($var) === 0) {$splits = array('亿' => 100000000, '万' => 10000);$chars = array('万' => 10000, '千' => 1000, '百' => 100, '十' => 10, '一' => 1, '零' => 0);$Ints = array('零' => 0, '一' => 1, '二' => 2, '三' => 3, '四' => 4, '五' => 5, '六' => 6, '七' => 7, '八' => 8, '九' => 9, '十' => 10);$var = str_replace('零', "", $var);foreach ($splits as $key => $step) {if (strpos($var, $key)) {$strs = explode($key, $var);$start += CnToInt(array_shift($strs)) * $step;$var = join('', $strs);}}foreach ($chars as $key => $step) {if (strpos($var, $key) !== FALSE) {$vs = explode($key, $var);if ($vs[0] === "") {$vs[0] = '一';}$start += $Ints[array_shift($vs)] * $step;$var = join('', $vs);} elseif (mb_strlen($var, 'utf-8') === 1) {$start += $Ints[$var];$var = '';break;}}return $start;} else {return intval($var);}
}
我的影视站: 好看影视网 www.haokanvideo.com
这篇关于汉字转整型数字,如:三百八十六 转成 386的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!