php – getrelativepath()

Saturday, 8. January 2011

Nachdem ich sehr viel Zeit zum Entwurf dieser, letztendlich eh recht simplen, Funktion aufgewandt habe, dachte ich mir : vielleicht kanns wer anders auch brauchen….

hier ist sie :  🙂

function findequalpath($htmlfile,$newitem){
 $htmlfilearr = explode("/", $htmlfile);        //explode into array
 $newitemarr = explode("/", $newitem);
 $newitemname = substr(strrchr($newitem,'/'),1);   //returns filename

 for($x = 0; $x <= count($htmlfilearr); $x++){        //find equalpaths
    if ($htmlfilearr[$x] == $newitemarr[$x]){$equalpaths++;}else{break;}
 }
 for ($x = 0; $x < $equalpaths; $x++){        //equal string to cut
    $stringtocut .= "$htmlfilearr[$x]/";
 }
 //same path or same file
 if ($equalpaths == (count($htmlfilearr)-1)){
    $relativelink = str_replace("$stringtocut","",$newitem);
    $relativelink = "./$relativelink";
 }elseif ($htmlfile == $newitem){
    $relativelink = "./$newitemname";
 }else{
 // counts number of dirs to go up
    $upcount = count($htmlfilearr) - $equalpaths - 1;  
    $up = str_repeat("../",$upcount);
    $relativelink = str_replace("$stringtocut","",$newitem);
    $relativelink = "$up$relativelink";
 }
return $relativelink;
}

Man übergibt ihr einfach zwei absolute Pfade und sie returnt den relativen Pfad von $newitem zu $htmlfile.