比方說,我有一個絕對路徑:/myproject/web/uploads/myfolder/myfile.jpg
PHP,最簡單的方法找到一個絕對路徑的相對路徑
我尋找到確定的相對路徑的FOM的絕對路徑的一部分,就像這樣:
<?php
echo relative_path('/myproject/web/uploads/myfolder/myfile.jpg', 'web/uploads');
// print "myfolder/myfile.jpg"
比方說,我有一個絕對路徑:/myproject/web/uploads/myfolder/myfile.jpg
PHP,最簡單的方法找到一個絕對路徑的相對路徑
我尋找到確定的相對路徑的FOM的絕對路徑的一部分,就像這樣:
<?php
echo relative_path('/myproject/web/uploads/myfolder/myfile.jpg', 'web/uploads');
// print "myfolder/myfile.jpg"
如果我明白,你只是想將部件從絕對路徑是在給定部分之後:
function relative_path($absolute, $part) {
$pos = strpos($absolute, $part);
return substr($absolute, $pos + strlen($part) + 1);
}
優雅,如此簡單,做得好! – julesbou
如何:
function relative_path ($absolute, $part) {
return (($rel = strstr($absolute, $part)) !== FALSE) ? ltrim(substr($rel, strlen($part)),'/') : FALSE;
}
返回具有相對路徑的字符串(如上所述)或FALSE
上失敗。
這個函數決不是萬無一失的,因爲任何試圖執行上述任務的函數都是可以的。考慮以下幾點:
$absolute = "/dir/someplace/dir/someplace/somedir/file.ext";
$part = "dir/someplace";
// Returns "dir/someplace/somedir/file.ext" when you may in fact want "somedir/file.ext"
relative_path($absolute, $part);
我懷疑你真正需要做的是在這裏重新思考什麼你實際上是試圖做...
作品,但我更喜歡簡單的@ arnaud576875,無論如何感謝 – julesbou
我不明白,你怎麼能從路徑的一部分關聯到相對路徑? – powtac
請在你的理解中定義相對路徑 – ajreal
答案是什麼:'relative_path('/ myproject/web/uploads/myfolder/backup/2/web/uploads/myfolder/myfile.jpg','web/uploads') ;' – webbiedave