首页 > php教程 > php手册 > 正文

PHP面试题:写一个函数,算出两个文件的相对路径,4种方法

php中文网
发布: 2016-06-06 19:36:03
原创
2135人浏览过

//在网上搜了4种答案,结果都不一样,请问哪个是对的?还是都不对,您有好的解决办法吗?求//解!!! ?php header("content-type:text/html;charset=utf-8"); $a='/a/b/c/d/e.php'; $b='/a/b/12/34/c.php'; function getRelativePath($a, $b) {///a/b/12/34/..

//在网上搜了4种答案,结果都不一样,请问哪个是对的?还是都不对,您有好的解决办法吗?求//解!!!

header("content-type:text/html;charset=utf-8");
$a='/a/b/c/d/e.php';
$b='/a/b/12/34/c.php';
  function getRelativePath($a, $b) {///a/b/12/34/../../c/d/e.php
    $returnPath = array(dirname($b));
    $arrA = explode('/', $a);
    $arrB = explode('/', $returnPath[0]);
    for ($n = 1, $len = count($arrB); $n         if ($arrA[$n] != $arrB[$n]) {
            break;
        }
    }
    if ($len - $n > 0) {
        $returnPath =array_merge($returnPath, array_fill(1, $len - $n, '..'));
    }
    
    $returnPath = array_merge($returnPath,array_slice($arrA, $n));
    return implode('/', $returnPath);
}
echo getRelativePath($a, $b);
//输出结果:/a/b/12/34/../../c/d/e.php
echo "


";

function getRelativePath1($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        if($a_arr[$i]$b_arr[$i]){
            $art1.= '../';
            $art2.= $a_arr[$i].'/';
        }
    }
    return $art1.$art2;
}
echo getRelativePath1($a, $b);
//输出结果:../../c/d/
echo "
";


  function getpathinfo( $a, $b ) {
    $a2array    = explode('/', $a);
    $b2array    = explode('/', $b);
    $pathinfo   = '';
    for( $i = 1; $i         $pathinfo.=$a2array[$i] == $b2array[$i] ? '../' : $b2array[$i].'/';
    }
    print_R($pathinfo);
}
getpathinfo($a, $b);
//输出结果:../../12/34/
echo "
";


$path="";
$path1 = explode('/',dirname($a));
$path2 = explode('/',dirname($b));
$aLen = count($path1);
$bLen = count($path2);
$maxLen = max($aLen,$bLen);
for($i = 1; $i if($path1[$i] != $path2[$i] && isset($path1[$i])){
if(isset($path2[$i]))$bUrl[]=$path2[$i];
$path.= "../";
}else{
$bUrl[]=$path2[$i];
}
}
echo $path.implode('/',$bUrl).'/'.basename($b);

//输出结果:../../a/b/12/34/c.php
?>








相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号