【转】PHP里的basename函数不支持中文名的解决

今天用到basename 函数获取文件名称时,发现如果是中文的文件名返回只有后缀的空文件名(如:.pdf)
    string basename ( string path [, string suffix] )
    说明
    给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。如果文件名是以 suffix 结束的,那这一部分也会被去掉。
方法一:按照网站上找到说法是此函数依赖于区域设置,如果是多字节名称返回为空可以通过setlocale函数如下设置

  1. <?php  
  2.  setlocale(LC_ALL, 'zh_CN.GBK');  
  3. // or any other locale that can handle multibyte characters.  
  4. ?>  


最好是修改服务器的区域设置来整体解决!

方法二:php自带的basename函数不支持中文,下面这个方法是最简单的实现。

  1. function get_basename($filename){    
  2.      return preg_replace('/^.+[\\\\\\/]/', '', $filename);    
  3.  }   
posted @ 2015-09-12 10:08  稻禾盛夏  阅读(1474)  评论(0编辑  收藏  举报