本节跟大家分享下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的用法举例(图文)相关推荐

  1. java SQLexists用法,mssql sql server where 中exists in 用法举例

    摘要: 下文讲述where子句中,in exists用法举例 in exists 功能简介: in exists:查询数据存在于表中的关键字 in exists:查询效率上 exists效率高于in ...

  2. java中dateFormat是什么_Java中的DateFormat用法举例

    觉得这个DateFormat是比较实用,记录一下,文章来自csdn博客中的一个名叫空心兜兜的网友. class="java"> import java.util.Date; ...

  3. mysql中change用法,mysql 中alter的用法以及一些步骤

    mysql 中alter的用法以及一些方法 在用到alter的时间,查到了这个文章,就copy下来了,详细进入下面链接: MySQL之alter语句用法总结 1:删除列 ALTER TABLE [表名 ...

  4. mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法

    Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...

  5. 【C++】C/C++ 中 static 的用法全局变量与局部变量

    C/C++ 中 static 的用法全局变量与局部变量 目录 1. 什么是static? 1.1 static 的引入 1.2 静态数据的存储 2. 在 C/C++ 中static的作用 2.1 总的 ...

  6. php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?

    foreach的使用方法小编不是很明确,分享达人指教一下.foreach (array_expressforeach($array as $key) { if(xxxx) { break; //bre ...

  7. python中str的index什么意思_python中index的用法是什么

    index() 一般用处是在序列中检索参数并返回第一次出现的索引,没找到就会报错,比如:>>> t=tuple('Allen') >>> t ('A', 'l', ...

  8. php foreach是什么,php中foreach的用法是什么

    php中foreach的用法是:[foreach ($array as $value) {要执行代码;}],每进行一次循环,当前数组元素的值就会被赋值给$value变量,在进行下一次循环时,将得到数组 ...

  9. java中的基本用法

    java中的基本用法 关键字:专门用途的字符串 所有java关键字都是小写英文 标识符 java常量 java变量 ■ 作用域:起作用的区域■ 使用前必须先声明,在赋值.使用变量名访问这块区域 jav ...

最新文章

  1. 搞个996或247,你的团队就是互联网团队了?
  2. 作为面试官的一点小感想
  3. 为什么SAP UI5框架在应用整个生命周期只调用onBeforeRendering一次
  4. 计算机基础知识菜鸟教程,机器学习基础知识整理归纳
  5. 滤镜怎么调_手机、电脑怎么剪辑视频?真心求推荐实用工具
  6. Zookeeper 如何选举master 主节点?
  7. android 两个imageview重叠,android-在现有ListVIew中添加更多项目时,ImageView重叠
  8. Mybatis笔记 – Po映射类型
  9. 眼儿媚·迟迟春日弄轻柔 [宋] 朱淑真
  10. 补交20145226蓝墨云班课 -- MyCP
  11. 理解CSRF(跨站请求伪造)
  12. spring之httpclient doget请求
  13. ASP.NET C#读写Cookie的方法!
  14. 可以使用TrafficMonitor查看本机的网速情况
  15. Swift开发经验——外部参数名
  16. 训练AI 玩王者荣耀,这算不算开挂?!(附源码)
  17. cad插入块_CAD中的块,用得好,画图快人一步!
  18. 使用NOKIA MMS LIBRARY发送中国移动彩信
  19. 相机快门和曝光时间的确定
  20. 程序员vs计算机教师,薪资大PK!教师VS程序员,你想不到的事实!

热门文章

  1. 撒花!李宏毅机器学习 2021 版正式开放上线
  2. 稠密峰值聚类 - Science2014
  3. 编程中函数的返回值的定义问题的解决
  4. 给 C# 代码动态着色的 JavaScript 脚本
  5. JavaScript内存释放
  6. 传智C++课程笔记-1
  7. contiki源码阅读之list
  8. S3C2440 中断相关寄存器小探
  9. 内核中用于数据接收的结构体struct msghdr
  10. 【svn老玩家翻车了,git玩的不够6】git恢复本地误删的文件