假设我有一条绝对路径:/myproject/web/uploads/myfolder/myfile.jpg
我正在寻找确定绝对路径的一部分的相对路径,如下所示:
<?php
echo relative_path('/myproject/web/uploads/myfolder/myfile.jpg', 'web/uploads');
// print "myfolder/myfile.jpg"
答案 0 :(得分:1)
怎么样:
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);
我怀疑你真正需要做的是重新思考你实际上要做的事情......
答案 1 :(得分:1)
如果我理解,你只需要来自给定部分之后的绝对路径的部分:
function relative_path($absolute, $part) {
$pos = strpos($absolute, $part);
return substr($absolute, $pos + strlen($part) + 1);
}