[url]http://hi.baidu.com/ken00821/blog/item/6a4cf8d48dc7a4ce50da4b09.html[/url]
解决的问题:当你在一个文件可能会被很多个文件包含,并且路径不过顶的时候,可能会使用到这个方法:这个方法是对上面方法的修改:
第一个参数: 被包含文件:/dev/gov1Dev/config/dbConfig.php
第二个参数: 包含文件:/dev/gov1Dev/pages/level2.php
得到结果:../config/dbConfig.php
那么,在level.php包含dbConfig的应该写成:../config/dbConfig.php
function getRelativePath($a,$b){
$a_url = array(dirname($a));
$b_url = array(dirname($b));
$a_arr = explode('/',$a_url[0]);
$b_arr = explode('/',$b_url[0]);
$len = count($a_arr);
$art1 = '';
$art2 = '';
for($i=1;$i<$len;$i++){
if($a_arr[$i]<>$b_arr[$i]){
$art1.= '../';
$art2.= $a_arr[$i].'/';
}
}
return $art1.$art2;
}
$a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
echo getRelativePath($a, $b); //../../c/d/
解决的问题:当你在一个文件可能会被很多个文件包含,并且路径不过顶的时候,可能会使用到这个方法:这个方法是对上面方法的修改:
function getRelativePath($a,$b){
// =/MyWebSite/dev/gov1Dev/config/dbConfig.php
// =/MyWebSite/dev/gov1Dev/index.php
//a=/MyWebSite/dev/gov1Dev/config/dbConfig.php
//b=/MyWebSite/dev/gov1Dev/pages/level1.php
//echo "a=".$a."<br>";
//echo "b=".$b."<br>";
$fileName = substr($a,strripos($a,"/")+1);
$a_url = array(dirname($a));
$b_url = array(dirname($b));
$a_arr = explode('/',$a_url[0]);
$b_arr = explode('/',$b_url[0]);
$len = count($a_arr);
$len1 = count($b_arr);
$art1 = '';
$art2 = '';
for($i=1;$i<$len;$i++){
if($a_arr[$i]<>$b_arr[$i]){
$art1.= '../';
$art2.= $a_arr[$i].'/';
}
}
if((count($a_arr)-count($b_arr))>0)
return $art2.$fileName;
else
return $art1.$art2.$fileName;
//return $art2.$fileName;
}
第一个参数: 被包含文件:/dev/gov1Dev/config/dbConfig.php
第二个参数: 包含文件:/dev/gov1Dev/pages/level2.php
得到结果:../config/dbConfig.php
那么,在level.php包含dbConfig的应该写成:../config/dbConfig.php