ホームページ >バックエンド開発 >PHPチュートリアル >PHPを介して2つのファイル間の相対パスを計算する方法

PHPを介して2つのファイル間の相対パスを計算する方法

jacklove
jackloveオリジナル
2018-06-09 11:57:572308ブラウズ

2 つのファイル間の相対パスを計算する php メソッド

例:

ファイルファイル A のパスは /home/web/lib/img/cache.php

ファイル B のパスは /home/web/ api/img /show.php

すると、ファイル B に対するファイル A の相対パスは ../../lib/img/cache.php になります。 、つまり、ファイル B はファイル A の相対パスにアクセスします。

function getRelativePath

<?php
/** 计算path1 相对于 path2 的路径,即在path2引用paht1的相对路径
* @param  String $path1
* @param  String $path2
* @return String
*/
function getRelativePath($path1, $path2){
    $arr1 = explode(&#39;/&#39;, $path1);
    $arr2 = explode(&#39;/&#39;, $path2);
    // 获取相同路径的部分
    $intersection = array_intersect_assoc($arr1, $arr2);
    $depth = 0;
    for($i=0,$len=count($intersection); $i<$len; $i++){
        $depth = $i;
        if(!isset($intersection[$i])){
            break;
        }
    }
    // 前面全部匹配
    if($i==count($intersection)){
        $depth ++;
    }
    // 将path2的/ 转为 ../,path1获取后面的部分,然后合拼
    
    // 计算前缀
    if(count($arr2)-$depth-1>0){
        $prefix = array_fill(0, count($arr2)-$depth-1, &#39;..&#39;);
    }else{
        $prefix = array(&#39;.&#39;);
    }
    $tmp = array_merge($prefix, array_slice($arr1, $depth));
    $relativePath = implode(&#39;/&#39;, $tmp);
    return $relativePath;
}
?>

demo

<?php
$path1 = &#39;/home/web/lib/img/cache.php&#39;;
$path2 = &#39;/home/show.php&#39;;
echo getRelativePath($path1, $path2).&#39;<br>&#39;; // ./web/lib/img/cache.php
$path1 = &#39;/home/web/lib/img/cache.php&#39;;
$path2 = &#39;/home/web/api/show.php&#39;;
echo getRelativePath($path1, $path2).&#39;<br>&#39;; // ../lib/img/cache.php
$path1 = &#39;/home/web/lib/img/cache.php&#39;;  
$path2 = &#39;/home/web/api/img/show.php&#39;;  
echo getRelativePath($path1, $path2).&#39;<br>&#39;; // ../../lib/img/cache.php
$path1 = &#39;/home/web/lib/img/cache.php&#39;;
$path2 = &#39;/xhome/web/show.php&#39;;
echo getRelativePath($path1, $path2).&#39;<br>&#39;; // ../../home/web/lib/img/cache.php
?>

この記事では、2 つのファイル間のパスを計算する方法について説明します。 PHP 相対パス方式。その他の関連コンテンツについては、php 中国語 Web サイトに注意してください。

関連する推奨事項:

PHP が指定された日付に関連するコンテンツを取得する方法について説明します

PHP がどのようにコンテンツを生成するかについての詳細な説明固有の RequestID クラス

MySQL を使用してデータベース テーブルの容量を確認する方法

以上がPHPを介して2つのファイル間の相対パスを計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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