包含中文数字的转换为阿拉伯数字

转换为阿拉伯数字好排序
使用php
<?php
function checkNatInt($str)
{
$map = array(
'一' => '1', '二' => '2', '三' => '3', '四' => '4', '五' => '5', '六' => '6', '七' => '7', '八' => '8', '九' => '9',
'壹' => '1', '贰' => '2', '叁' => '3', '肆' => '4', '伍' => '5', '陆' => '6', '柒' => '7', '捌' => '8', '玖' => '9',
'零' => '0', '两' => '2',
'仟' => '千', '佰' => '百', '拾' => '十',
'万万' => '亿',
);
$str = str_replace(array_keys($map), array_values($map), $str);
$str = checkString($str, '/([\d亿万千百十]+)/u');
$func_c2i = function ($str, $plus = false) use (&$func_c2i) {
if (false === $plus) {
$plus = array('亿' => 100000000, '万' => 10000, '千' => 1000, '百' => 100, '十' => 10,);
}
$i = 0;
if ($plus)
foreach ($plus as $k => $v) {
$i++;
if (strpos($str, $k) !== false) {
$ex = explode($k, $str, 2);
$new_plus = array_slice($plus, $i, null, true);
$l = $func_c2i($ex[0], $new_plus);
$r = $func_c2i($ex[1], $new_plus);
if ($l == 0) $l = 1;
return $l * $v + $r;
}
}
return (int)$str;
};
return $func_c2i($str);
}
//来自uct php微信开发框架,其中的checkString函数如下
function checkString($var, $check = '', $default = '')
{
if (!is_string($var)) {
if (is_numeric($var)) {
$var = (string)$var;
} else {
return $default;
}
}
if ($check) {
return (preg_match($check, $var, $ret) ? $ret[1] : $default);
}
return $var;
}
function changeName($str){
$arr = explode('集',$str);
$number = checkNatInt($arr[0]); //普通中文数字,9600000
return "第".$number."集".$arr[1];
}
//echo changeName("第一百四十九集(下)赵国的那些事儿");
$path = "/phpwww/wang/zg";
//扫描文件夹
$files = scandir($path);
foreach($files as $file){
if($file != '.' && $file != '..'){
$oldFile = $file;
$newFile = changeName($file);
echo "old file".$path."/".$oldFile." new file ". $path."/".$newFile."<br>";
rename($path."/".$oldFile,$path."/".$newFile);
}
}
执行结果



浙公网安备 33010602011771号