ホームページ  >  記事  >  php教程  >  PHP関数は2つのファイルの相対パスを計算します

PHP関数は2つのファイルの相対パスを計算します

WBOY
WBOYオリジナル
2016-06-21 08:51:281223ブラウズ

Sina はインタビューで次のような質問をしました: 2 つのファイルの相対パスを計算する php 関数を作成しますか? php //e.php に対する c.php の相対パスを計算します。../../12/34 $a = / /b/c/d/e.php; $b = /a/b/12/34/c.php; getpathinfo($a, $b); 🎜 >

Sina からのインタビューの質問: 2 つのファイルの相対パスを計算する php 関数を記述してください

// e.php に対する c.php の相対パスが ../../12/34

になるように計算します。

$a = '/a/b/c/d/e.php';

$b = '/a/b/12/34/c.php';

getpathinfo($a, $b);

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);

}

?>

完璧ではない、より複雑な方法もありますが、考え方は正しいので、研究することができます

$a = 'aa/bb/cc/dd/a.php';

$b ='aa/bb/11/22/33/b.php';

// 2 つのファイルの相対パスをカウントする関数を作成します。

関数 GetNum($variant,$variant2){

$pth1 = null;

$pth2 = null;

$tmp = array();

//パスの下にファイルが存在するかどうかを判断します。

if(is_file($variant) && is_file($variant2)){

$len1 = count($pth1 =explode('/',dirname($variant)));

$len2 = count($pth2 =explode('/',dirname($variant2)));

$maxlen = max($len1,$len2);

for($i=1;$i if($pth1[$i] != $pth2[$i] && isset($pth1[$i])){

if(isset($pth2[$i])) $tmp[] = $pth2[$i];

}その他{

$tmp[] = $pth2[$i];

$path .= '../';

}

}

return $path.implode('/',$tmp).'/'.basename($variant2);

}その他{

return 'パスが不正です!';

}

}

print_r(GetNum($a,$b));

?>



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。