PHP中查找文件的相对路径也许绝对路径的工具
PHP中查找文件的相对路径或者绝对路径的工具
以前面试题目中有一题为求两个文件的相对路径,当时觉得没有电脑,书写代码太麻烦,没有做那个题目,今日工作比较闲遐,就想起这事来,完成了两个函数,代码未经过实际生产环境考验,如引用至生产环境,还请慎重阅读,主要是参考学习
查看源代码打印帮助
1 <?php 2 /** 3 * 文件的相对路径或者绝对路径查找工具 4 * 5 * @author 清源教育<support@tsingyuan.cn > 6 * @version $Id:v 1.0 ,2013/10/13 17:29:00 7 * @copyright (c) Copyright;tsingyuan,2013 8 */ 9 10 /** 11 * 返回文件的绝对路径 12 * 13 * @param string $filename 14 * @return string 15 */ 16 function absoluteroute($filename) 17 { 18 $split = '/\/|\\\/'; 19 $currentdir = preg_split($split, dirname(__FILE__)); 20 $dirarr = preg_split($split, $filename); 21 $diracount = count($dirarr); 22 $cda = count($currentdir); 23 if(strpos(PHP_OS, 'WIN') !== false) 24 $reg = '/\w\:/'; 25 else 26 $reg = '/\//'; 27 if(!preg_match($reg, $dirarr[0])) 28 { 29 foreach($dirarr as $nk=>$name) 30 { 31 if($name == "." || $name == '..') 32 { 33 if($name == '..') 34 $filenamearr = array_slice($currentdir, 0, -($nk+1)); 35 if($name == '.' && $nk == '0') 36 $filenamearr = array_slice($currentdir, 0); 37 } 38 else 39 { 40 $filenamearr[] = $name; 41 } 42 } 43 $filename = implode('/', $filenamearr); 44 } 45 return $filename; 46 } 47 48 /** 49 * 返回两个文件的相对路径 (PS:^_^不错的php学习交流群:276167802,验证:csl,有兴趣的话可以加入进来一起讨论) 50 * (为了保证输入的相对路径参数可用,故此函数依赖absoluteroute) 51 * 52 * @param string $filenamea 53 * @param string $filenameb 54 * @return string 55 */ 56 function relativeroute($filenamea, $filenameb) 57 { 58 $split = '/\/|\\\/'; 59 $filenamea = absoluteroute($filenamea); 60 $filenameb = absoluteroute($filenameb); 61 $dira =preg_split($split, $filenamea); 62 $dirb =preg_split($split, $filenameb); 63 $flag = true; 64 if(count($dira) >= count($dirb)) 65 { 66 $tmp = array(); 67 $tmp = $dira; 68 $dira = $dirb; 69 $dirb = $tmp; 70 $flag = false; 71 } 72 foreach($dira as $k=>$v) 73 if($v != $dirb[$k])break; 74 75 $dirr = array_slice($dirb, $k); 76 77 $k == 1 ? $dtag = '/' : $dtag = './'; 78 $result = $dtag.implode('/', $dirr); 79 if(!$flag) 80 { 81 if($dira[0] == '')array_shift($dira); 82 foreach($dirr as $kk=>&$v) 83 ($kk+1) != count($dirr)? 84 ($v ? 85 $v = '..' : 86 $v = '.' 87 ) : 88 $v = implode('/', array_slice($dira, $k)) ; 89 $result = $dtag.implode('/', $dirr); 90 } 91 return $result; 92 }
本文出自 “清源教育” 博客,转载请注明此处,谢谢!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

在PHPStorm中如何进行CLI模式的调试?在使用PHPStorm进行开发时,有时我们需要在命令行界面(CLI)模式下调试PHP�...

如何在系统重启后自动设置unixsocket的权限每次系统重启后,我们都需要执行以下命令来修改unixsocket的权限:sudo...

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...
