1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php
2. 写一个函数,算出两个文件的相对路径
如 $a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
计算出 $b 相对于 $a 的相对路径应该是 ../../c/d将()添上
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php
2. 写一个函数,算出两个文件的相对路径
如 $a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
计算出 $b 相对于 $a 的相对路径应该是 ../../c/d将()添上
解决方案 »
- 使用PHP语句安装数据库,如何使用变量做表名
- 新手讨教学习PHP的方法
- 需求一个上传图片的代码(成品)
- ThinkPHP获取当前页面可能地址id值
- 急!!!求php+mysql:用户信息注册完整源码!!!!
- 请教如何执行文本里的SQL语句?
- 请问php怎样连接interbase数据库呢?
- 一个关于MYSQL数据库查询效率问题
- 初学者在线急等关于checkbox的问题
- 想不通:php文件中用session_start(),为什么IE中每新(tarteg="_blank"或window.open)开一页就会新生成一个session文件呢?
- 怎样实现http协议下载,就是带http的完整路径,下载后改名。
- 觅PHP兼职,捎带散分
$url = 'http://www.sina.com.cn/abc/de/fg.php?id=1';
$p = parse_url($url);
echo pathinfo($p['path'], PATHINFO_EXTENSION);
'/etc/'
,'/home/wcq/var/html/wcq.html'
);
//该函数默认返回$b 相对 $a的路径,
//如果设置$reverse为true;那么将返回$a相对$b的路径,
//默认的目录分隔符号为常量DIRECTORY_SEPARATOR
//可以通过设置$separator参数来处理不同平台上的路径(比如在linux上处理windows的路径,或反之)
function relative_path($a , $b , $separator = DIRECTORY_SEPARATOR , $reverse = false){$sp = $separator;//处理相反的路径
if($reverse){ return relative_path($b , $a , $sp);}//将两个路径字符串分别路径分割为两个数组
$a = explode($sp , $a);
$b = explode($sp , $b);$l = count($a);//如果根目录不相同则返回错误
if($a[0] != $b[0]){ return " dir $a and $b not in the same filesystem !";}$i = 0 ;for( ; $i < $l && $a[$i] == $b[$i]; $i++);//返回相对路径
$path = str_repeat("..$sp" , $l - $i - 1) . implode($sp , array_slice($b , $i));if(strpos($path , '..') === false){ $path = ".$sp" . $path;
}return $path;
}
echo relative_path($path[0] , $path[1] , '/') , '<br>';
?>
$a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
$i = 0;
$back = 0;
$flag = false;
while($b[$i++])
{
if($b[$i] == $a[$i] && $flag == false)
{ continue;
}
else
{
$flag = !$flag ? true : $flag;
$s .= $a[$i];
if($b[$i] == "/") $back++;
}
}
echo str_repeat("../",$back).$s;
$bb = '/a/b/12/34/c.php';$a = explode("/",$aa);
$b = explode("/",$bb);
$return = "";
for($i=0;$i<count($a);$i++){
if($a[$i]==$b[$i]){}
else{
$return = (empty($return)) ? $a[$i] : "../".$return. "/" .$a[$i];
}
}
echo $return;