博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算两个路径的父亲路径
阅读量:5936 次
发布时间:2019-06-19

本文共 2525 字,大约阅读时间需要 8 分钟。

计算/a/b/c/d/e.php  /a/b/12/34/c.php的父亲路径为/a/b

 

 
  1. <?php  
  2. /*  
  3. *系统环境:windows/linux  
  4. *编译环境:php5/php4  
  5. *输入参数:存放在in.txt,多个参数时空格分隔  
  6.                     参数1是一个路径,用\或者/分隔  
  7.                     参数2是一个路径,用\或者/分隔  
  8.                     参数1,2必须都是绝对路径或者相对路径  
  9.                     例如:/a/b/c/d/e.php  /a/b/12/34/c.php  
  10.                       
  11.                     d:\a\b\c\d\e.php  d:\a\b\12\34/c.php  
  12.                       
  13.                     a/b/c/d/e.php  a/b/12/34/c.php  
  14.     输出:out.txt  
  15. */ 
  16. $params=getParams(2);  
  17. $toParh=trim($params[0]);  
  18. $fromParh=trim($params[1]);  
  19. $toParh=str_replace("\\", "/", $toParh);  
  20. $fromParh=str_replace("\\", "/", $fromParh);  
  21.       
  22. //linux形式  
  23. if(substr($toParh, 0,1)=="/" || substr($fromParh, 0,1)=="/")  
  24. {  
  25.     if(!substr($toParh, 0,1)=="/")  
  26.     {  
  27.         //若是$toParh是绝对路径,而$fromParh不是绝对路径,报错      
  28.         error_msg("两个参数必须都是绝对路径或者相对路径\n");  
  29.     }  
  30.     if(!substr($fromParh, 0,1)=="/")  
  31.     {  
  32.         //若是$toParh是绝对路径,而$fromParh不是绝对路径,报错      
  33.         error_msg("两个参数必须都是绝对路径或者相对路径\n");  
  34.     }  
  35. }  
  36. //windows形式  
  37. if(preg_match("/^[a-z]:/i"$toParh) || preg_match("/^[a-z]:/i"$fromParh))  
  38. {  
  39.     if(!preg_match("/^([a-z]):/i"$toParh,$matchs1))  
  40.     {  
  41.         //若是$toParh是绝对路径,而$fromParh不是绝对路径,报错      
  42.         error_msg("两个参数必须都是绝对路径或者相对路径\n");  
  43.     }  
  44.     if(!preg_match("/^([a-z]):/i"$fromParh,$matchs2))  
  45.     {  
  46.         //若是$toParh是绝对路径,而$fromParh不是绝对路径,报错      
  47.         error_msg("两个参数必须都是绝对路径或者相对路径\n");  
  48.     }  
  49.     if($matchs1[1]!=$matchs2[1])  
  50.     {  
  51.         //若是$toParh和$fromParh不在同一个盘里      
  52.         error_msg("两个参数必须都是在同一个盘里\n");  
  53.     }  
  54. }  
  55.  
  56. echo getRalationPath($toParh,$fromParh);  
  57. function getRalationPath($toParh,$fromParh)  
  58. {  
  59.     $toParh=str_replace("\\", "/", $toParh);  
  60.     $fromParh=str_replace("\\", "/", $fromParh);  
  61.     $topaths=split("/",$toParh);  
  62.     $fromparhs=split("/",$fromParh);  
  63.       
  64.     array_pop($fromparhs);  
  65.     array_pop($topaths);  
  66.       
  67.     $relationPath="";  
  68.     //去掉相同目录后,计算需要往上的目录级数  
  69.     $n=count(array_diff_assoc ($fromparhs,$topaths));  
  70.     for($i=0;$i$n;$i++)  
  71.     {  
  72.         $relationPath.="../";     
  73.     }  
  74.     //去掉相同目录后,需要深入的目录  
  75.     $digdir=array_diff_assoc ($topaths,$fromparhs);  
  76.     $relationPath.=join("/",$digdir);  
  77.     return $relationPath;  
  78. }  
  79.  
  80. /*  
  81.     从in.txt里读取参数  
  82. */ 
  83. function getParams($paramNum)  
  84. {  
  85.     $in=file_get_contents("in.txt");  
  86.     if($in===FALSE){  
  87.         error_msg("cannot read in.txt,please check in.txt exists\n");     
  88.     }  
  89.     $in=preg_replace("/(\s+)/i"" "$in);  
  90.     //多个参数时,按照空格分隔  
  91.     $parms=split(" ",trim($in));  
  92.     if($parms===FALSE)  
  93.     {  
  94.         error_msg("cannot get param from in.txt\n");  
  95.     }  
  96.     if(count($parms) < $paramNum)  
  97.     {  
  98.         error_msg("it needs $paramNum params\n");  
  99.     }  
  100.     return $parms;  
  101. }  
  102.  
  103. /*  
  104.     把结果输出到输出文件里  
  105.     当isClean=true时清空out.txt  
  106. */ 
  107. function output($msg,$isClean=false)  
  108. {  
  109.     if($isClean)  
  110.     {  
  111.     $handle = fopen('out.txt''w');  
  112.     fclose($handle);      
  113.     }  
  114.     error_log($msg."\n", 3, "out.txt");  
  115. }  
  116. /*  
  117.     输入错误信息  
  118.     如果$is_exit表示输入信息后退出  
  119. */ 
  120. function error_msg($msg,$is_exit=true)  
  121. {  
  122.     if($is_exit)  
  123.         die($msg."\n");  
  124.     else 
  125.         echo $msg."\n";  
  126. }  
  127. ?> 

      本文转自yifangyou 51CTO博客,原文链接:     本文转自yifangyou 51CTO博客,原文链接:,如需转载请自行联系原作者

,如需转载请自行联系原作者

你可能感兴趣的文章
【微信小程序】再次授权地理位置getLocation+openSetting使用
查看>>
手机端上传图片及java后台接收和ajaxForm提交
查看>>
HDU 5030 Rabbit's String
查看>>
【MSDN 目录】C#编程指南、C#教程、ASP.NET参考、ASP.NET 4、.NET Framework类库
查看>>
jquery 怎么触发select的change事件
查看>>
angularjs指令(二)
查看>>
(原創) 如何建立一个thread? (OS) (Linux) (C/C++) (C)
查看>>
<气场>读书笔记
查看>>
实现一个平行四边形
查看>>
领域驱动设计,构建简单的新闻系统,20分钟够吗?
查看>>
web安全问题分析与防御总结
查看>>
React 组件通信之 React context
查看>>
ZooKeeper 可视化监控 zkui
查看>>
Linux下通过配置Crontab实现进程守护
查看>>
ios 打包上传Appstore 时报的错误 90101 90149
查看>>
Oracle推出轻量级Java微服务框架Helidon
查看>>
密码概述
查看>>
nagios+nrpe监控配置错误日志集
查看>>
《数据分析实战:基于EXCEL和SPSS系列工具的实践》——3.4 数据量太大了怎么办...
查看>>
JavaScript应用开发实践指南迷你书
查看>>