php 搜索文件路径,PHP中查找文件的相对路径或者绝对路径的工具

以前面试题目中有一题为求两个文件的相对路径,可视化专题,当时觉得没有电脑,书写代码太麻烦,没有做那个题目,站群,今日工作比较闲遐,就想起这事来,完成了两个函数,代码未经过实际生产环境考验,如引用至生产环境,还请慎重阅读,主要是参考学习

查看源代码打印帮助

1

2

/**

3

* 文件的相对路径或者绝对路径查找工具

4

*

5

* @author 清源教育

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

}

相关报道:

DNS是网络应用的基础设施,它的安全性对于互联网的安全有着举足轻重的影响。对于经常使用电脑或者信息设备的人来说,经常会在网络设置中看到DNS。但是对于普通大众来说,DNS是非常陌生的。而在这个信息技术和互联网飞速发展的时代,陌生和不熟悉就意味不安全 更多

在过去,我们如果想在Web上播放视频,也是都是通过Flash来播放,同样并不是所有的 浏览器 都安装了Flash播放器插件,而现在我们在HTML5中,就能完全脱离Flash或其他的插件来播放视频了 1、视频格式的简单介绍 视频格式:avi、rmb、wmv、mpeg4、ogg、webm 视 更多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值