在PHP中将单词转换为数字

我正在尝试将以单词形式编写的数值转换为整数。例如,“ iPhone有233.7万个应用程序”将变成“ iPhone为230783个应用程序”

在开始编码之前,我想知道此转换是否存在任何功能/代码。


MMMHUHU
浏览 362回答 3
3回答

人到中年有点甜

我还没有对它进行过广泛的测试,直到我看到输出中所期望的东西时,我才或多或少地对其进行了研究,但是它似乎可行,并且从左到右进行了解析。<?php$str = 'twelve billion people know iPhone has two hundred and thirty thousand, seven hundred and eighty-three apps as well as over one million units sold';function strlen_sort($a, $b){&nbsp; &nbsp; if(strlen($a) > strlen($b))&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; return -1;&nbsp; &nbsp; }&nbsp; &nbsp; else if(strlen($a) < strlen($b))&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; return 1;&nbsp; &nbsp; }&nbsp; &nbsp; return 0;}$keys = array(&nbsp; &nbsp; 'one' => '1', 'two' => '2', 'three' => '3', 'four' => '4', 'five' => '5', 'six' => '6', 'seven' => '7', 'eight' => '8', 'nine' => '9',&nbsp; &nbsp; 'ten' => '10', 'eleven' => '11', 'twelve' => '12', 'thirteen' => '13', 'fourteen' => '14', 'fifteen' => '15', 'sixteen' => '16', 'seventeen' => '17', 'eighteen' => '18', 'nineteen' => '19',&nbsp; &nbsp; 'twenty' => '20', 'thirty' => '30', 'forty' => '40', 'fifty' => '50', 'sixty' => '60', 'seventy' => '70', 'eighty' => '80', 'ninety' => '90',&nbsp; &nbsp; 'hundred' => '100', 'thousand' => '1000', 'million' => '1000000', 'billion' => '1000000000');preg_match_all('#((?:^|and|,| |-)*(\b' . implode('\b|\b', array_keys($keys)) . '\b))+#i', $str, $tokens);//print_r($tokens); exit;$tokens = $tokens[0];usort($tokens, 'strlen_sort');foreach($tokens as $token){&nbsp; &nbsp; $token = trim(strtolower($token));&nbsp; &nbsp; preg_match_all('#(?:(?:and|,| |-)*\b' . implode('\b|\b', array_keys($keys)) . '\b)+#', $token, $words);&nbsp; &nbsp; $words = $words[0];&nbsp; &nbsp; //print_r($words);&nbsp; &nbsp; $num = '0'; $total = 0;&nbsp; &nbsp; foreach($words as $word)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; $word = trim($word);&nbsp; &nbsp; &nbsp; &nbsp; $val = $keys[$word];&nbsp; &nbsp; &nbsp; &nbsp; //echo "$val\n";&nbsp; &nbsp; &nbsp; &nbsp; if(bccomp($val, 100) == -1)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $num = bcadd($num, $val);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; continue;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; else if(bccomp($val, 100) == 0)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $num = bcmul($num, $val);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; continue;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; $num = bcmul($num, $val);&nbsp; &nbsp; &nbsp; &nbsp; $total = bcadd($total, $num);&nbsp; &nbsp; &nbsp; &nbsp; $num = '0';&nbsp; &nbsp; }&nbsp; &nbsp; $total = bcadd($total, $num);&nbsp; &nbsp; echo "$total:$token\n";&nbsp; &nbsp; $str = preg_replace("#\b$token\b#i", number_format($total), $str);}echo "\n$str\n";?>
打开App,查看更多内容
随时随地看视频慕课网APP