用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2664|回复: 1
收起左侧

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

[复制链接]
发表于 2014-4-17 11:10:52 | 显示全部楼层 |阅读模式
今天在使用目录辅助函数和文件辅助函数的时候发现不能出来中文。

中文读出来是乱码。

查了一下相关资料

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

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

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

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



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

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

PHP复制代码
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格式的
可以试着转下编码

本版积分规则