PHP解析目录路径的3个函数总结


Posted in PHP onNovember 18, 2014

要描述一个文件的位置,可以使用决对路径和相对路径。绝对路径是从根开始一级一级地进入各个子目录,最后指定该文件名或目录名。而相对目录是从当前目录进入某目录,最后指定该文件名或目录名。在系统的每个目录下都有两个特殊的目录“.”和“..”,分别指示当前目录和当前目录的父目录(上一级目录)。例如:

$unixPath = “/var/www/html/index.php”; ?在UNIX系统中绝对路径,必须使用“/”作为路径分隔符

$winPath = “C:\\Appserv\\www\\index.php”; ?Windows系统的绝对路径,默认使用“\”作为路径分隔符

$winPath = “C:/Appserv/www/index.php”; ?在Windows系统中也接受“/”作为路径分隔符,推荐使用

$fileName1=”file.txt”; ?相对路径,当前目录下的file.txt文件

$fileName2=”javascript/common.js”; ?相对路径,当前目录中javascript子目录下的common.js文件

$fileName3=”../images/logo.gif”; ?相对路径,上一级目录中images子目录下的logo.gif文件

在上例中,分别列出了UNIX和Windows系统中绝对路径和相对路径的格式。其中在UNIX系统中必须使用正斜线“/”作为路径分隔符,而在Windows系统中默认使用反斜线“\”作为路径分隔符,在程序中表示还要将“\”转义,但也接受正斜线“/”作为分隔符的写法。为了程序可以有很好的移植性,建议都使用“/”作为文件的路径分隔符。另外,也可以使用PHP的内置常量DIRECTORY_SEPARATOR,其值为当前操作系统的默认文件路径分隔符。例如:

$fileName2 = “javascript”.DIRECTORY_SEPARATOR.”common.js”; ?Unix为“/”,Windows为“\”

将目录路径中各个属性分离开通常很有用,如末尾的扩展名、目录部分和基本名。可以通过PHP的系统函数basename()、dirname()和pathinfo()函数完成这些任务。

①函数basename()

函数basename()返回路径中的文件名部分。该函数的原型如下所示:

string basename(string path[,string suffix]) //返回路径中的文件名部分

该函数给出一个包含其指向一个文件的全路径的字符串,本函数返回基本的文件名。第二个参数可选参数,规定文件的扩展名。如果提供了则不会输出这个扩展名。该函数的使用如下面的代码所示:
<?php

//包含有指向一个文件的全部路径的字符串

$path = "/var/www/html/page.php";

//显示带有文件扩展名的文件名,输出page.php

echo basename($path);

//显示不带有文件扩展名的文件名,输出page

echo basename($path,".php");

?>

②函数dirname()

该函数恰好与basename()相反,只需要一个参数,给出一个包含有指向一个文件的全部路径的字符串,本函数返回去掉文件名后的目录名。该函数的使用如以下代码所示:

<?php

$path = "/var/www/html/page.php";

echo dirname($path); //返回目录名/var/www/html

echo dirname('c:/'); //返回目录名c:/

?>

③函数pathinfo()

函数pathinfo()返回一个关联数组,其中包括指定路径中的目录名、基本名和扩展名三个部分。分别通过数组键dirname、basename和extension来引用。该函数的使用如下代码所示。

<?php

$path = "/var/www/html/page.php"; 

$path_parts = pathinfo($path); //返回包括指定路径中的目录名、基本名和扩展名关联数组

echo $path_parts["dirname"]; //输出目录名/var/www/html

echo $path_parts["basename"]; //输出基本名page.php

echo $path_parts["extension"]; //输出扩展名.php

?>
PHP 相关文章推荐
使ecshop模板中可引用常量的实现方法
Jun 02 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
Jul 05 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
Aug 06 PHP
PHP实现自动识别Restful API的返回内容类型
Feb 07 PHP
详解PHP数组赋值方法
Nov 07 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
Dec 30 PHP
PHP线程的内存回收问题
Jul 08 PHP
php获得文件夹下所有文件的递归算法的简单实例
Nov 01 PHP
关于ThinkPHP中的异常处理详解
May 11 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
Jul 19 PHP
PHP自定session保存路径及删除、注销与写入的方法
Nov 18 #PHP
php中字符查找函数strpos、strrchr与strpbrk用法
Nov 18 #PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
Nov 18 #PHP
PHP统计目录大小的自定义函数分享
Nov 18 #PHP
php创建和删除目录函数介绍和递归删除目录函数分享
Nov 18 #PHP
PHP递归复制、移动目录的自定义函数分享
Nov 18 #PHP
PHP打开和关闭文件操作函数总结
Nov 18 #PHP
You might like
同时提取多条新闻中的文本一例
2006/10/09 PHP
php set_magic_quotes_runtime() 函数过时解决方法
2010/07/08 PHP
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
php实现的简易扫雷游戏实例
2015/07/09 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
jQuery学习5 jQuery事件模型
2010/02/07 Javascript
Dojo 学习要点
2010/09/03 Javascript
Js组件的一些写法
2010/09/10 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
javascript中Object使用详解
2015/01/26 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
Tornado高并发处理方法实例代码
2018/01/15 Python
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
python数据结构之线性表的顺序存储结构
2018/09/28 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
Python依赖包迁移到断网环境操作
2020/07/13 Python
Pandas的Apply函数具体使用
2020/07/21 Python
python调用百度API实现人脸识别
2020/11/17 Python
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
美国珠宝精品店:Opulent Jewelers
2019/08/20 全球购物
委托证明的格式
2014/01/10 职场文书
乡镇党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
员工工作表现自我评价
2015/03/06 职场文书
特此通知格式
2015/04/27 职场文书
敬老院义诊活动总结
2015/05/07 职场文书