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

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值