php basename()无法获取带中文字符的文件名(乱码)
时间:2016-08-02
我们大家都知道,php basename()函数用于从路径中获取文件名,但如果文件名包括中文字符将无法正确获取到结果,本文章向大家介绍如何解决basename()函数无法获取带中文字符的文件名,需要的朋友可以参考一下。
关于php basename()函数的基本使用方法,大家可以查看这篇文章《php basename()解析路径并获取文件名称》
有两种方法可以解决basename()函数无法获取带中文字符的文件名
- 用setlocale()函数设置区域方法
- preg_replace()正则表达式方法
下面具体了解每种方法如何实现basename()支持中文
第一种方法:setlocale()函数设置区域
basename()函数依赖于区域,所以我们需要使用setlocale()为其设置区域
<?php
setlocale(LC_ALL, 'zh_CN.GBK');
$path = "/home/www/data/用户.txt";
$filename = basename($path);
print $filename;
?>
输出:用户.txt
第二种方法:preg_replace()正则表达式
<?php
/* http://www.manongjc.com/article/1296.html */
function get_basename($filename){
return preg_replace('/^.+[\\\\\\/]/', '', $filename);
}
$path = "/home/www/data/用户.txt";
$filename = get_basename($path);
print $filename;
?>
输出:用户.txt
- javascript 红皮高程(8)
- javascript 红皮高程(7)
- javascript 红皮高程(17)-- 左移(<<)
- javascript 红皮高程(17)-- 按位异或(XOR)
- javascript 红皮高程(17)
- javascript 红皮高程(16)
- javascript 红皮高程(15)
- javascript 红皮高程(21)-- 乘性操作符
- javascript 红皮高程(20)-- 逻辑或
- javascript 红皮高程(19)-- 逻辑与
- 技术分享 | 浅谈 RAS
- Sniper-OJ 练习平台多题WriteUp
- 怎么能学透一个知识点
- Jarvis-OJ平台多题WriteUp分享
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC