我想将包含其所有内容的旧文件夹移动到另一个新文件夹,但是,我要检查新文件夹目标是否包含旧文件夹目标,否则我试图将文件夹移动到自身这是不可能的。
我想检查旧路径是否已经是新路径的子集。
类似的东西:
check_function( "folder/test" , "folder/test/test2"); //true
check_function( "folder/test/" , "folder/test/test2"); //true
check_function( "folder/test" , "folder/test2"); //false
check_function( "folder/test" , "folder/test2/test3"); //false
我该怎么做?
答案 0 :(得分:1)
<?php
function sanitize(string $path): string
{
return trim(trim($path), "/");
}
function check(string $path1, string $path2): bool
{
$path1 = sanitize($path1);
$path2 = sanitize($path2);
$pathsElem1 = explode("/", $path1);
$pathsElem2 = explode("/", $path2);
foreach ($pathsElem1 as $i => $item) {
if (!array_key_exists($i, $pathsElem2)) {
return false;
}
if ($pathsElem2[$i] !== $item) {
return false;
}
}
return true;
}
$testCases = [
check("folder/test", "folder/test/test2"),
check("folder/test/", "folder/test/test2"),
check("folder/test", "folder/test2"),
check("folder/test", "folder/test2/test3"),
];
var_dump($testCases);
输出:
array(4) {
[0]=>
bool(true)
[1]=>
bool(true)
[2]=>
bool(false)
[3]=>
bool(false)
}
答案 1 :(得分:-1)
检查字符串是否有/
作为最后一个字符。如果没有,请追加它。
然后检查第二个字符串是否以第一个字符串开头。
以下是一些startsWith
和endsWith
函数可供帮助: