<?php
$path = iconv('utf-8','gbk','D:/baiduyundownload/lampPHP/特'); //转换编码,因为是中文目录,反正无法识别
$dir = opendir($path);
while($filename=readdir($dir))
{
if(stripos($filename,'wmv')) //只有wmv文件 才替换
{
rep($filename);
}
}
closedir($dir); //释放资源
function rep($filename)
{
$arr = array('一','二','三','四','五','六','七','八','九','十');//因为此页面为utf-8所以数组中的元素也是utf-8格式
$oldName = $filename; //保存一下,注意 $filename 由 readdir获得,也是 gbk编码
$filename = iconv('gbk','utf-8',$filename); //要与数组中的元素匹配 所以要转换格式
for ($i=0; $i <count($arr) ; $i++) {
if(mb_strpos($filename,$arr[$i],0,'utf-8')!==false)
{
$filename = str_replace($arr[$i], $i+1, $filename); //将文件名称中的中文数字改变为阿拉伯数字,有一个问题就是‘十’的替换
}
}
//以下代码为 对替换 ‘十’ 的判断
$pos = mb_strpos($filename,'10',0,'utf-8');//获得 ‘10’的位置
if(is_numeric(mb_substr($filename,$pos-1,1,'utf-8'))&&is_numeric(mb_substr($filename,$pos+2,1,'utf-8')))
{
//二十三 => 2103 => 23
$filename = str_replace('10', '', $filename);//如果10 左右都为数字 则替换成空
}
else if(is_numeric(mb_substr($filename,$pos-1,1,'utf-8')))
{
//十三 => 103 => 13
$filename = str_replace('10', '0', $filename);//如果10 左边为数字 则替换成'0'
}
else if(is_numeric(mb_substr($filename,$pos+2,1,'utf-8')))
{
//二十 => 210 => 20
$filename = str_replace('10', '1', $filename);//如果10 右边为数字 则替换成'1'
}
//将文件名中的 ‘第’ 和 ‘集’字 去掉,还有空格替换成'.'
$filename = str_replace('第', '', str_replace('集', '', str_replace(' ', '.', $filename)));
$filename = iconv('utf-8','gbk',$filename); //一样的 要用 gbk编码,oldname
$path = iconv('utf-8','gbk','D:/baiduyundownload/lampPHP/特'); //因为实在函数中,还有弄一下 path
rename($path.'/'.$oldName, $path.'/'.$filename); //替换文件名
}
?>
php 小功能 (垃圾代码) 把中文 数字 替换成 阿拉伯数字
最新推荐文章于 2021-04-14 13:45:55 发布