日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

php计算相对路径

發(fā)布時(shí)間:2024/10/12 php 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php计算相对路径 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

計(jì)算兩個(gè)目錄的相對(duì)路徑,網(wǎng)上有好多代碼,發(fā)現(xiàn)好多是用array_diff_assoc這個(gè)函數(shù),這樣不對(duì).

我來(lái)寫一個(gè)簡(jiǎn)單的.
https://segmentfault.com/a/1190000021291646

<?php /*** Created by PhpStorm.* User: 優(yōu)美代碼* Date: 2019/9/9* Time: 19:59*/function getPath($path1, $path2) {//是否是真實(shí)的路徑格式 這里省略判斷了,//兩個(gè)文件相同時(shí)候,直接返回錯(cuò)誤if ($path1 == $path2) {return false;}$arr1 = explode('/', $path1);$arr2 = explode('/', $path2);$count1 = count($arr1);for ($i = 0; $i < $count1; $i++) {//因?yàn)楦夸浂际情_始"/"開始的.比較到不一致時(shí)候終止,if ($arr1[$i] !== $arr2[$i]) {break;}}//需要回退的次數(shù)$back_num = $count1 - $i - 1;//回退到交叉點(diǎn)if ($back_num == 0) {$back_str = './';} else {$back_str = str_repeat('../', $back_num);}//刪除第二個(gè)路徑中,與第一個(gè)路徑里相同的部分//也就是刪掉交叉點(diǎn)和前面的東西array_splice($arr2, 0, $i);$path2 = implode('/', $arr2);//組合起來(lái)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);

說(shuō)說(shuō)代碼原理:

給出兩個(gè)路徑
a是 /data/www/app1/shop/model/index.php
b是 /data/www/app1/user/model/ok/user.php

兩個(gè)路徑啊a,b,想象成兩條河流, 有一個(gè)共同的源頭是根目錄 /,還有一個(gè)分支點(diǎn) app1

分析第一個(gè)路徑,
找到分支點(diǎn) app1,從分支點(diǎn)開始數(shù)目錄層次深度是m,

這樣用m個(gè)…/拼起來(lái),就返回到分支點(diǎn)app1,

第二個(gè)路徑的交匯點(diǎn)之后的路徑"user/model/ok/user.php"

組成了 …/…/user/model/ok/user.php

這就是b相對(duì)于a的,相對(duì)路徑了 (在a文件中 引入b文件,用到的)

來(lái)自:優(yōu)美代碼.
https://segmentfault.com/a/1190000021291646

總結(jié)

以上是生活随笔為你收集整理的php计算相对路径的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。