php的pathinfo,php中PathInfo的用法举例(图文)
本节跟大家分享下php中全局变量$_SERVER['PATH_INFO']及pathinfo()函数的用法,就我所了解的当前流行的cms系统,比如dedecms与帝国cms均多有用到这二个,来定义或获取全局信息。
来看个例子,有如下的网址:
http://www.jbxue.com/index.php/index/do.html?c=index&m=search
则,
$_SERVER['PATH_INFO'] = ‘/index/do.html’
$_SERVER['QUERY_STRING'] = 'c=index&m=search';
这里给出一个解析PATH_INFO的代码:
/**
* pathinfo应用举例
* edit by www.jbxue.com
*/
if( !isset( $_SERVER['PATH_INFO'] ) ){
$pathinfo = 'default';
}else{
$pathinfo = explode('/', $_SERVER['PATH_INFO']);
}
if( is_array($pathinfo) AND !empty($pathinfo) ){
$page = $pathinfo[1];
}else{
$page = 'a.php';
}
require "$page.php";
?>
下面再来看一个例子,这里介绍的不再是$_SERVER['PATH_INFO']全局变量了,而是我们今天的主角pathinfo函数。
pathinfo()函数
pathinfo()函数返回一个包含了文件信息的数组,数组中有四个元素,分别是dirname、basename、extension、filename。
例如,有如下的文件路径,可以用pathinfo进行分解:
//pathinfo函数用法
$path = "/www/jbxue/images/logo.jpg";
$fileArr = pathinfo($path);
print_r($fileArr);
//输出结果:Array ( [dirname] => /www/jbxue/images [basename] => logo.jpg [extension] => jpg [filename] => logo )
//根据数组的键名就可以获得对应的键值
echo $fileArr['filename'];
//输出结果:logo
echo $fileArr['extension'];
//输出结果:jpg
?>
最后,说说pathinfo()函数在处理中文时遇到的问题及解决方法。
问题描述:
pathinfo在处理中文文件名时,如果中文在字首就出现获取的filename为空,英文在字首后面是中文的则能获取到。
如下图所示:
可以用如下的函数取代它,代码如下:
//增强型的pathinfo函数
//edit by www.jbxue.com
function path_info($filepath)
{
$path_parts = array();
$path_parts ['dirname'] = rtrim(substr($filepath, 0, strrpos($filepath, '/')),"/")."/";
$path_parts ['basename'] = ltrim(substr($filepath, strrpos($filepath, '/')),"/");
$path_parts ['extension'] = substr(strrchr($filepath, '.'), 1);
$path_parts ['filename'] = ltrim(substr($path_parts ['basename'], 0, strrpos($path_parts ['basename'], '.')),"/");
return $path_parts;
}
?>
用这个函数去处理中文文件路径或文件时,就不会有问题了。
如下图所示:
php的pathinfo,php中PathInfo的用法举例(图文)相关推荐
- java SQLexists用法,mssql sql server where 中exists in 用法举例
摘要: 下文讲述where子句中,in exists用法举例 in exists 功能简介: in exists:查询数据存在于表中的关键字 in exists:查询效率上 exists效率高于in ...
- java中dateFormat是什么_Java中的DateFormat用法举例
觉得这个DateFormat是比较实用,记录一下,文章来自csdn博客中的一个名叫空心兜兜的网友. class="java"> import java.util.Date; ...
- mysql中change用法,mysql 中alter的用法以及一些步骤
mysql 中alter的用法以及一些方法 在用到alter的时间,查到了这个文章,就copy下来了,详细进入下面链接: MySQL之alter语句用法总结 1:删除列 ALTER TABLE [表名 ...
- mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法
Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...
- 【C++】C/C++ 中 static 的用法全局变量与局部变量
C/C++ 中 static 的用法全局变量与局部变量 目录 1. 什么是static? 1.1 static 的引入 1.2 静态数据的存储 2. 在 C/C++ 中static的作用 2.1 总的 ...
- php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?
foreach的使用方法小编不是很明确,分享达人指教一下.foreach (array_expressforeach($array as $key) { if(xxxx) { break; //bre ...
- python中str的index什么意思_python中index的用法是什么
index() 一般用处是在序列中检索参数并返回第一次出现的索引,没找到就会报错,比如:>>> t=tuple('Allen') >>> t ('A', 'l', ...
- php foreach是什么,php中foreach的用法是什么
php中foreach的用法是:[foreach ($array as $value) {要执行代码;}],每进行一次循环,当前数组元素的值就会被赋值给$value变量,在进行下一次循环时,将得到数组 ...
- java中的基本用法
java中的基本用法 关键字:专门用途的字符串 所有java关键字都是小写英文 标识符 java常量 java变量 ■ 作用域:起作用的区域■ 使用前必须先声明,在赋值.使用变量名访问这块区域 jav ...
最新文章
- 搞个996或247,你的团队就是互联网团队了?
- 作为面试官的一点小感想
- 为什么SAP UI5框架在应用整个生命周期只调用onBeforeRendering一次
- 计算机基础知识菜鸟教程,机器学习基础知识整理归纳
- 滤镜怎么调_手机、电脑怎么剪辑视频?真心求推荐实用工具
- Zookeeper 如何选举master 主节点?
- android 两个imageview重叠,android-在现有ListVIew中添加更多项目时,ImageView重叠
- Mybatis笔记 – Po映射类型
- 眼儿媚·迟迟春日弄轻柔 [宋] 朱淑真
- 补交20145226蓝墨云班课 -- MyCP
- 理解CSRF(跨站请求伪造)
- spring之httpclient doget请求
- ASP.NET C#读写Cookie的方法!
- 可以使用TrafficMonitor查看本机的网速情况
- Swift开发经验——外部参数名
- 训练AI 玩王者荣耀,这算不算开挂?!(附源码)
- cad插入块_CAD中的块,用得好,画图快人一步!
- 使用NOKIA MMS LIBRARY发送中国移动彩信
- 相机快门和曝光时间的确定
- 程序员vs计算机教师,薪资大PK!教师VS程序员,你想不到的事实!