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 相关文章推荐
CodeIgniter php mvc框架 中国网站
May 26 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
Nov 23 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
Dec 09 PHP
php打印一个边长为N的实心和空心菱型的方法
Mar 02 PHP
PHP实现抓取迅雷VIP账号的方法
Jul 30 PHP
Zend Framework框架Smarty扩展实现方法
Mar 22 PHP
24条货真价实的PHP代码优化技巧
Jul 28 PHP
Zend Framework入门应用实例详解
Dec 11 PHP
详谈phpAdmin修改密码后拒绝访问的问题
Apr 03 PHP
如何修改yii2.0自带的user表为其它的表
Aug 01 PHP
Phpstorm+Xdebug断点调试PHP的方法
May 14 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
Sep 26 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
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
js下弹出窗口的变通
2007/04/18 Javascript
range 标准化之获取
2011/08/28 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
JQuery插件开发示例代码
2013/11/06 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
javasctipt如何显示几分钟前、几天前等
2014/04/30 Javascript
JS实现跟随鼠标闪烁转动色块的方法
2015/02/26 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
BootstrapTable加载按钮功能实例代码详解
2017/09/22 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
Angular2中监听数据更新的方法
2018/08/31 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
微信小程序实现禁止分享代码实例
2019/10/19 Javascript
Vue中错误图片的处理的实现代码
2019/11/07 Javascript
Nest.js 授权验证的方法示例
2021/02/22 Javascript
js实现验证码干扰(动态)
2021/02/23 Javascript
python实现数据写入excel表格
2018/03/25 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
2021/01/30 Python
css3实现蒙版弹幕功能
2019/06/18 HTML / CSS
事业单位个人应聘自荐信
2013/09/21 职场文书
小学教育毕业生自荐信
2013/11/18 职场文书
八一建军节演讲稿
2014/09/10 职场文书
产品委托授权书范本
2014/09/16 职场文书
紫日观后感
2015/06/05 职场文书
《天净沙·秋思》教学反思三篇
2019/11/02 职场文书
MySQL 常见的数据表设计误区汇总
2021/06/07 MySQL
关于Vue中的options选项
2022/03/22 Vue.js
Golang日志包的使用
2022/04/20 Golang
mysql全面解析json/数组
2022/07/07 MySQL