タイトル通り、2つのパスの相対パスを求めてレンガを求めましょう!
- /**
- * 2 つのパスの相対パスを見つけます
- * @param string $patha path a
- * @param string $pathb path b
- * @author Joychao
- * @link http://www. Joychao .cc
- * @return string 相対パス
- */
- function getRelativePath($patha,$pathb){
- $arr_a=explode('/',trim(dirname($patha),'/'));
- $arr_b =explode('/',trim(dirname($pathb),'/'));
- $n=min(count($arr_a),count($arr_b));//ループする最短パスを使用します
- $ flag =true;//マークビット [マークに交差がないかどうか]
- for($i=0;$i if($arr_a[$i]==$arr_b[ $i]) {
- unset($arr_a[$i],$arr_b[$i]);//
- }else{
- if($i==0)
- $flag=false;/ の前の同じ部分を削除します。 /2 つのパスはありません 交差点
- Break;//ループを停止します
- }
- }
-
- $str=$flag?str_repeat('../',count($arr_b)+1):'/';//交差部分がない場合、それはルート ディレクトリです。" /"[Linux の状況、Windows が自動的に変更できる]
- return $str.join('/',$arr_a);//結合して return
- }
- // TEST
-
- $a ='/a/b/c/d /e.php';
- $b ='/a/b/12/34/c.php';
- echo 'パス a:'.$a ;
- echo '
Path b:'. $b;
- echo '
パス a とパス b の間の相対パス (e.php パスにアクセスするには c.php を使用します) :';
- echo getRelativePath($a,$b);
- // -----出力-------------=
- パス a:/a/b/c/d/ e.php
- パス b:/a/b/12/34/c .php
- パス a とパス b の間の相対パス (e.php パスにアクセスするには c.php を使用します) は次のとおりです: ../../ ../c/d
コードをコピー
|