2 changed files with 58 additions and 3 deletions
@ -0,0 +1,50 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace app\common\lib\pinyin; |
||||
|
|
||||
|
/** |
||||
|
* 中文转拼音类. |
||||
|
*/ |
||||
|
class PinyinNumber |
||||
|
{ |
||||
|
protected static $pinyin = [0 => 'ling', 1 => 'yi', 2 => 'er', 3 => 'san', 4 => 'si', 5 => 'wu', 6 => 'liu', 7 => 'qi', 8 => 'ba', 9 => 'jiu']; |
||||
|
|
||||
|
protected static $unit = ['', 'shi', 'bai', 'qian', 'wan', 'shiwan', 'baiwan', 'qianwan', 'yi']; |
||||
|
|
||||
|
/** |
||||
|
* 获取数字的拼音 |
||||
|
* @param $number |
||||
|
* @param $strtoupper // 返回大写 |
||||
|
* @return string |
||||
|
*/ |
||||
|
public static function getPinyin($number,$strtoupper = false) |
||||
|
{ |
||||
|
$number = strval($number); // 将数字转换为字符串 |
||||
|
$length = strlen($number); |
||||
|
$pinyinStr = ''; |
||||
|
|
||||
|
for ($i = 0; $i < $length; $i++) { |
||||
|
$digit = intval($number[$i]); |
||||
|
|
||||
|
if ($digit != 0) { |
||||
|
// 处理万以上的位数 |
||||
|
if ($length - $i > 4) { |
||||
|
$pinyinStr .= self::$pinyin[$digit] . self::$unit[$length - $i - 1]; |
||||
|
// 处理万位之间的零 |
||||
|
if ($digit == 0 && $number[$i + 1] != 0) { |
||||
|
$pinyinStr .= 'ling'; |
||||
|
} |
||||
|
} else { |
||||
|
$pinyinStr .= self::$pinyin[$digit] . self::$unit[$length - $i - 1]; |
||||
|
} |
||||
|
} else { |
||||
|
// 处理连续的0 |
||||
|
if ($i == 0 || $number[$i] != 0) { |
||||
|
$pinyinStr .= self::$pinyin[$digit]; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
if ($strtoupper) $pinyinStr = strtoupper($pinyinStr); |
||||
|
return $pinyinStr; |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue