Heim  >  Artikel  >  Backend-Entwicklung  >  PHP实现汉字转整型数字,如:一百零一 转成101

PHP实现汉字转整型数字,如:一百零一 转成101

WBOY
WBOYOriginal
2016-07-25 08:45:241418Durchsuche
  1. test();
  2. /**
  3. * 测试
  4. */
  5. function test() {
  6. echo CnToInt('一'); // 1
  7. echo CnToInt('十'); // 10
  8. echo CnToInt('十一'); // 11
  9. echo CnToInt('一百一十'); // 110
  10. echo CnToInt('一千零一'); // 1001
  11. echo CnToInt('一万零一百零一'); // 10101
  12. echo CnToInt('一亿一千三百万零三千零一'); // 113003001
  13. echo CnToInt('一千万亿'); // 11.0E+15
  14. }
  15. /**
  16. * 中文转数字
  17. * @param String $var 需要解析的中文数
  18. * @param Int $start 初始值
  19. * @return int
  20. */
  21. function CnToInt($var, $start = 0) {
  22. if (is_numeric($var)) {
  23. return $var;
  24. }
  25. if (intval($var) === 0) {
  26. $splits = array('亿' => 100000000, '万' => 10000);
  27. $chars = array('万' => 10000, '千' => 1000, '百' => 100, '十' => 10, '一' => 1, '零' => 0);
  28. $Ints = array('零' => 0, '一' => 1, '二' => 2, '三' => 3, '四' => 4, '五' => 5, '六' => 6, '七' => 7, '八' => 8, '九' => 9, '十' => 10);
  29. $var = str_replace('零', "", $var);
  30. foreach ($splits as $key => $step) {
  31. if (strpos($var, $key)) {
  32. $strs = explode($key, $var);
  33. $start += CnToInt(array_shift($strs)) * $step;
  34. $var = join('', $strs);
  35. }
  36. }
  37. foreach ($chars as $key => $step) {
  38. if (strpos($var, $key) !== FALSE) {
  39. $vs = explode($key, $var);
  40. if ($vs[0] === "") {
  41. $vs[0] = '一';
  42. }
  43. $start += $Ints[array_shift($vs)] * $step;
  44. $var = join('', $vs);
  45. } elseif (mb_strlen($var, 'utf-8') === 1) {
  46. $start += $Ints[$var];
  47. $var = '';
  48. break;
  49. }
  50. }
  51. return $start;
  52. } else {
  53. return intval($var);
  54. }
  55. }
复制代码

转成, PHP, 一百零一


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHPMailer发送邮件 Nächster Artikel:PHP文件上传示例