用php求两个文件的相对路径

作者:enenba | 发表于:2012-01-17 10:42 | 分类:php采集

网上又找到一个很好很强大的函数!

<?php
/**
 * 用php求两个文件的相对路径,如:
 * 文件一:/usr/local/log/test/test.log
 * 文件二:/usr/local/apache/conf/logs/tests.log
 * 文件二相对文件一的路径为../../apache/conf/logs/tests.log
 * 简单说是文件一中写文件二的路径为../../apache/conf/logs/tests.log
 * 实现代码如下:
 */
function compara_path($path_a, $path_b) {
	// 切割路径.
	$array_a = explode('/', $path_a);

	$array_b = explode('/', $path_b);
	// 从数组中删除最后的文件,剩下的全为文件夹名称.
	$file_a = array_pop($array_a); 
	$file_b = array_pop($array_b); 
	// 子目录个数.
	$a_len = count($array_a); 
	$b_len = count($array_b); 
	// 循环求出第几个目录不同.
	for ($i = 0; $i < $a_len; $i++) {
		if ($array_a[$i] != $array_b[$i]) { // 当$i=2时,跳出循环
			break;
		}
	}
	// 求出相对路径.
	$com_path = "";

	for ($j = 0; $j < $a_len - $i; $j++) { // 当$i=2时,$j<1
		$com_path .= '../'; 
	}

	for ($i; $i < $b_len; $i++) { 
		$com_path .= $array_b[$i] . '/'; 
	}

	$com_path .= $file_b; 
	echo $com_path;
}
$path_1 = "/usr/local/log/test/test.log";
$path_2 = "/usr/local/apache/conf/logs/tests.log";
echo compara_path($path_1, $path_2);
/**
 * 输出:
    ../../apache/conf/logs/tests.log
 */
?>

上一篇: js控制表单的reset   |   下一篇:PHP下载CSS文件中的图片» 标签: php函数 php采集 网站扒皮

评论: