PHP,从绝对路径中查找相对路径的最简单方法

时间:2011-09-07 20:30:49

标签: php regex

假设我有一条绝对路径:/myproject/web/uploads/myfolder/myfile.jpg

我正在寻找确定绝对路径的一部分的相对路径,如下所示:

<?php

echo relative_path('/myproject/web/uploads/myfolder/myfile.jpg', 'web/uploads');

// print "myfolder/myfile.jpg"

2 个答案:

答案 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);
}