이 코드는 당신을 도울 수 있습니다 :
$str1 = $argv[1];
$str2 = $argv[2];
//clean
$str1 = trim(str_replace("//", "/", $str1), "/");
$str2 = trim(str_replace("//", "/", $str2), "/");
$paths1 = explode("/", $str1);
$paths2 = explode("/", $str2);
$j = 0;
$found = false;
$output = '';
for ($i=0; $i<count($paths1); $i++) {
$item1 = $paths1[$i];
$item2 = $paths2[$j];
if ($item1 == $item2) {
if (!$found)
$found = $i; //first point
$j++;
} else if ($found) {
//we have found a subdir so remove
$output = "/".implode("/", array_slice($paths1, 0, $i))
."/".implode("/", array_slice($paths2, $j));
$found = false;
break;
}
}
//final checking
if ($found) {
$output = "/".implode("/", $paths1)
."/".implode("/", array_slice($paths2, $j));
}
print "FOUND?: ".(!empty($output)?$output:'No')."\n";
가 동일한 문자열을 감지하고 그 시점까지 첫 번째 문자열을 절감하고 두 번째 문자열에서 다른 부분을 복사합니다.
그들이 같이 "부분"문자열을 공유하는 경우이 코드는 두 문자열을 받아 들일 것입니다 :
/path1/path2/path3
/path2/other/file.png
출력됩니다 : /path/path2/other/file.png
그리고 "경로 3"를 제거하지만,로에게 몇 가지 변경이 될 수 있습니다 보다 엄격한
아니요,이 함수는 일치하는 비율의 INT를 반환합니다. 죄송 합니다만 문제의 용도가 없습니다. –