相对路径和绝对路径的相互转换 (转化)

$relen)?$curlen:$relen; $ret=""; for($i=0;$i<$maxlen;$i++){ if(trim($curArr[$i])=='') continue; if($curArr[$i]==$reArr[$i]){ $ret.='../'; }else{ $o=''; for($j=$i;$j<$maxlen;$j++){ $ret.=$o.$reArr[$j]; $o='/'; } break; } } return $ret; } $a='/a/b/c/d/w.php'; $b='../../24/23/ws.php'; $b='./24/23/ws.php'; echo rep2($a,$b); //$b='24/23/ws.php'; /** * 相反的过程,计算绝对路径 * @param 当前路径 $cur * @param 相对路径 $relative */ function rep2($cur,$relative){ $cur=str_replace('//','/',$cur); $relative=str_replace('//','/',$relative); $curArr=explode('/',$cur); $reArr=explode('/',$relative); $curlen=count($curArr); $relen=count($reArr); $base=dirname($cur); if($reArr[0]=='..'){ foreach ($reArr as $val){ if($val=='..') { $base=dirname($base); continue; } return $base.'/'.str_replace('../','',$relative); } }elseif($reArr[0]==''){ return $relative; }else{ if($reArr[0]=='.'){ return $base.'/'.str_replace('./','',$relative); } return $base.'/'.$relative; } }

你可能感兴趣的:(算法)