ホームページ  >  記事  >  バックエンド開発  >  相対パス法に関する小さな研究

相対パス法に関する小さな研究

WBOY
WBOYオリジナル
2016-07-25 09:02:371148ブラウズ
タイトル通り、2つのパスの相対パスを求めてレンガを求めましょう!
  1. /**
  2. * 2 つのパスの相対パスを見つけます
  3. * @param string $patha path a
  4. * @param string $pathb path b
  5. * @author Joychao
  6. * @link http://www. Joychao .cc
  7. * @return string 相対パス
  8. */
  9. function getRelativePath($patha,$pathb){
  10. $arr_a=explode('/',trim(dirname($patha),'/'));
  11. $arr_b =explode('/',trim(dirname($pathb),'/'));
  12. $n=min(count($arr_a),count($arr_b));//ループする最短パスを使用します
  13. $ flag =true;//マークビット [マークに交差がないかどうか]
  14. for($i=0;$i if($arr_a[$i]==$arr_b[ $i]) {
  15. unset($arr_a[$i],$arr_b[$i]);//
  16. }else{
  17. if($i==0)
  18. $flag=false;/ の前の同じ部分を削除します。 /2 つのパスはありません 交差点
  19. Break;//ループを停止します
  20. }
  21. }
  22. $str=$flag?str_repeat('../',count($arr_b)+1):'/';//交差部分がない場合、それはルート ディレクトリです。" /"[Linux の状況、Windows が自動的に変更できる]
  23. return $str.join('/',$arr_a);//結合して return
  24. }
  25. // TEST
  26. $a ='/a/b/c/d /e.php';
  27. $b ='/a/b/12/34/c.php';
  28. echo 'パス a:'.$a ;
  29. echo '
    Path b:'. $b;
  30. echo '
    パス a とパス b の間の相対パス (e.php パスにアクセスするには c.php を使用します) :';
  31. echo getRelativePath($a,$b);
  32. // -----出力-------------=
  33. パス a:/a/b/c/d/ e.php
  34. パス b:/a/b/12/34/c .php
  35. パス a とパス b の間の相対パス (e.php パスにアクセスするには c.php を使用します) は次のとおりです: ../../ ../c/d
コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。