PHP實現漢字轉整型數字,如:一百零一 轉成101
test(); /**
- 測試 */ function test() { echo CnToInt('一'); // 1 echo CnToInt('十'); // 10 echo CnToInt('十一'); // 11 echo CnToInt('一百一十'); // 110 echo CnToInt('一千零一'); // 1001 echo CnToInt('一萬零一百零一'); // 10101 echo CnToInt('一億一千三百萬零三千零一'); // 113003001 echo CnToInt('一千萬億'); // 11.0E+15 }
/**
- 中文轉數字
- @param String $var 需要解析的中文數
- @param Int $start 初始值
- @return int
*/
function CnToInt($var, $start = 0) {
if (is_numeric($var)) {
} if (intval($var) === 0) {return $var;
} else {$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;
} }</pre>return intval($var);
本文由用戶 lpki123 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!