PHP,最简单的方法找到一个绝对路径的相对路径

问题描述:

比方说,我有一个绝对路径:/myproject/web/uploads/myfolder/myfile.jpgPHP,最简单的方法找到一个绝对路径的相对路径

我寻找到确定的相对路径的FOM的绝对路径的一部分,就像这样:

<?php 

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

// print "myfolder/myfile.jpg" 
+0

我不明白,你怎么能从路径的一部分关联到相对路径? – powtac

+2

请在你的理解中定义相对路径 – ajreal

+2

答案是什么:'relative_path('/ myproject/web/uploads/myfolder/backup/2/web/uploads/myfolder/myfile.jpg','web/uploads') ;' – webbiedave

如果我明白,你只是想将部件从绝对路径是在给定部分之后:

function relative_path($absolute, $part) { 
    $pos = strpos($absolute, $part); 
    return substr($absolute, $pos + strlen($part) + 1); 
} 
+0

优雅,如此简单,做得好! – 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); 

我怀疑你真正需要做的是在这里重新思考什么你实际上是试图做...

+0

作品,但我更喜欢简单的@ arnaud576875,无论如何感谢 – julesbou