您的位置:首页 > 运维架构 > Linux

PHP basename 函数 linux下中文路径的问题解决方法

2013-05-06 20:36 891 查看
basename函数用来获取路径中文件名部分,

可是在redhat4.3或者某些其他系统下,无法正确获得带有中文的路径中的文件名,

下面这个函数来自网上,很好很强大,可以代替basename使用:

function sbasename($filename) {

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

}

如果linux系统不能正确显示中文目录和文件名,可以在/etc/profile的最后加入:

export LANG="zh_CN.GBK"

至于为什么没用UTF-8,因为中文windows系统的文件名似乎是gbk的,

用utf-8编码的文件名在windows系统下会显示为乱码。所以要用gbk的编码去写文件、目录名。

linux下也设置成gbk,就和windows服务器上的处理一致了。

本身php程序和数据库都是用了utf8的字符集,所以在处理文件名的时候需要来回转码,顺便贴一个比较安全的转码函数:

function siconv($str, $out_charset, $in_charset) {

if (strtoupper($out_charset) != strtoupper($in_charset)) {

if (function_exists('iconv') && (@$outstr = iconv("$in_charset//IGNORE", "$out_charset//IGNORE", $str))) {

return $outstr;

} elseif (function_exists('mb_convert_encoding') && (@$outstr = mb_convert_encoding($str, $out_charset, $in_charset))) {

return $outstr;

}

}

return $str;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: