dolphin 发表于 2014-4-17 11:10:52

目录和文件辅助函数不能处理中文。

今天在使用目录辅助函数和文件辅助函数的时候发现不能出来中文。

中文读出来是乱码。

查了一下相关资料

PHP的很多出来文件和路径的系统函数本身就是不支持中文的

这个最好的解决办法就是使用正则表达式去处理

例如basename不支持中文可以使用下面的函数来做

function get_basename($filename){
   return preg_replace('/^.+[\\\\\\/]/', '', $filename);
}



这个我测试了 在纯PHP里面是没有问题的,但是不知道为什么放到 CI 里面就不行了

另外还找到下面这个方式,也是在CI 里面不行

function path_info($filepath)   
{   
    $path_parts = array();   
    $path_parts ['dirname'] = rtrim(substr($filepath, 0, strrpos($filepath, '/')),"/")."/";   
    $path_parts ['basename'] = ltrim(substr($filepath, strrpos($filepath, '/')),"/");   
    $path_parts ['extension'] = substr(strrchr($filepath, '.'), 1);   
    $path_parts ['filename'] = ltrim(substr($path_parts ['basename'], 0, strrpos($path_parts ['basename'], '.')),"/");   
    return $path_parts;
}



一叶扁舟 发表于 2014-4-17 15:10:25

php原生获取文件名是gb2312格式的
可以试着转下编码
页: [1]
查看完整版本: 目录和文件辅助函数不能处理中文。