2011-09-07 8 views
0

이의 내가 절대 경로가 있다고 가정하자 절대 경로에서 상대 경로 찾기 : 내가 상대 경로를 따지기 위해 찾고 있어요 /myproject/web/uploads/myfolder/myfile.jpgPHP, 가장 쉬운 방법은

은 다음과 같이 절대 경로의 일부를 FOM :

(전술 한 바와 같이)

function relative_path ($absolute, $part) { 
    return (($rel = strstr($absolute, $part)) !== FALSE) ? ltrim(substr($rel, strlen($part)),'/') : FALSE; 
} 

은 상대 경로 문자열을 반환 또는 실패에 FALSE :

<?php 

echo relative_path('/myproject/web/uploads/myfolder/myfile.jpg', 'web/uploads'); 

// print "myfolder/myfile.jpg" 
+0

경로의 일부에서 상대 경로를 어떻게 연결할 수 있습니까? – powtac

+2

여러분의 이해에 상대 경로를 정의하십시오. – ajreal

+2

'relative_path ('/ myproject/web/uploads/myfolder/backup/2/web/uploads/myfolder/myfile.jpg', 'web/uploads') ; ' – webbiedave

답변

1

내가 이해한다면, 당신은 단지의 일부를 원하는 ... 당신이 정말로 여기에서 당신이 실제로 무엇을하려고 다시 생각입니다 필요가 무엇인지 의심 주어진 부분 다음의 절대 경로 :

function relative_path($absolute, $part) { 
    $pos = strpos($absolute, $part); 
    return substr($absolute, $pos + strlen($part) + 1); 
} 
+0

우아하고 단순합니다. – julesbou

1
에 대해 어떻게

.

이 기능은 위에 설명 된 작업을 수행하려고 시도한 모든 기능이 있기 때문에 결코 의미가 없습니다. 다음 사항을 고려 :

$absolute = "/dir/someplace/dir/someplace/somedir/file.ext"; 
$part = "dir/someplace"; 

// Returns "dir/someplace/somedir/file.ext" when you may in fact want "somedir/file.ext" 
relative_path($absolute, $part); 

나는

+0

는 작동하지만, @ arnaud576875의 단순성을 선호합니다. 어쨌든 덕분에 – julesbou

관련 문제