【转】PHP里的basename函数不支持中文名的解决
今天用到basename 函数获取文件名称时,发现如果是中文的文件名返回只有后缀的空文件名(如:.pdf)
string basename ( string path [, string suffix] )
说明
给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。如果文件名是以 suffix 结束的,那这一部分也会被去掉。
方法一:按照网站上找到说法是此函数依赖于区域设置,如果是多字节名称返回为空可以通过setlocale函数如下设置
- <?php
- setlocale(LC_ALL, 'zh_CN.GBK');
- // or any other locale that can handle multibyte characters.
- ?>
最好是修改服务器的区域设置来整体解决!
方法二:php自带的basename函数不支持中文,下面这个方法是最简单的实现。
- function get_basename($filename){
- return preg_replace('/^.+[\\\\\\/]/', '', $filename);
- }
学如逆水行舟,不进则退。