生活随笔
收集整理的這篇文章主要介紹了
php计算相对路径
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
計算兩個目錄的相對路徑,網上有好多代碼,發現好多是用array_diff_assoc這個函數,這樣不對.
我來寫一個簡單的.
https://segmentfault.com/a/1190000021291646
<?php
/*** Created by PhpStorm.* User: 優美代碼* Date: 2019/9/9* Time: 19:59*/function getPath($path1, $path2)
{//是否是真實的路徑格式 這里省略判斷了,//兩個文件相同時候,直接返回錯誤if ($path1 == $path2) {return false;}$arr1 = explode('/', $path1);$arr2 = explode('/', $path2);$count1 = count($arr1);for ($i = 0; $i < $count1; $i++) {//因為根目錄都是開始"/"開始的.比較到不一致時候終止,if ($arr1[$i] !== $arr2[$i]) {break;}}//需要回退的次數$back_num = $count1 - $i - 1;//回退到交叉點if ($back_num == 0) {$back_str = './';} else {$back_str = str_repeat('../', $back_num);}//刪除第二個路徑中,與第一個路徑里相同的部分//也就是刪掉交叉點和前面的東西array_splice($arr2, 0, $i);$path2 = implode('/', $arr2);//組合起來return $back_str . $path2;
}$path1 = '/data/www/app/book/a/d/a.php';
$path2 = '/data/app/app/book/b.php';$path1 = '/data/www/app1/shop/model/index.php';
$path2 = '/data/www/app1/user.php';echo getPath($path1, $path2);
說說代碼原理:
給出兩個路徑
a是 /data/www/app1/shop/model/index.php
b是 /data/www/app1/user/model/ok/user.php
兩個路徑啊a,b,想象成兩條河流, 有一個共同的源頭是根目錄 /,還有一個分支點 app1
分析第一個路徑,
找到分支點 app1,從分支點開始數目錄層次深度是m,
這樣用m個…/拼起來,就返回到分支點app1,
第二個路徑的交匯點之后的路徑"user/model/ok/user.php"
組成了 …/…/user/model/ok/user.php
這就是b相對于a的,相對路徑了 (在a文件中 引入b文件,用到的)
來自:優美代碼.
https://segmentfault.com/a/1190000021291646
總結
以上是生活随笔為你收集整理的php计算相对路径的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。