首先,这不是重复的,因为我还没有找到与此相关的答案。
我的所有文件和文件夹都位于Base DIRECTORY
上。
$base = dirname(__DIR__).'/files';
我想从路径复制到路径:
$copyFrom = $base.'/our';
$copyTo = $base.'/New folder';
现在,我要首先检查{strong> $ base 中是否存在our
和New Folder
目录,以便复制应在内部完成$ base 仅目录。
例如,如果用户尝试将../../
放在copyFrom / copyTo路径的末尾,那么系统将在外部复制,以防止我需要检查。
我尝试过的是,但这只是告诉我目录存在:
if (is_dir($base.$copyFrom) && is_dir($base.$copyTo)) {
}
对此进行了再次尝试,但从某种意义上说,这将返回NotPresent
我在$ base our
和New folder
中有2个目录
$directories = glob($base . '/*' , GLOB_ONLYDIR);
foreach ($directories as $result) {
if ($result === '.' or $result === '..') continue;
if (is_dir($copyTo == $result)) {
echo 'Yes ';
}else{
echo 'NotPresent ';
echo $copyTo .' '. $result . ' | ';
}
}
回声
C:\ MAMP \ htdocs \ projectAuru \ our / files /我们的C:\ MAMP \ htdocs \ projectAuru \ our / files /新文件夹| C:\ MAMP \ htdocs \ projectAuru \我们的文件/我们的C:\ MAMP \ htdocs \ projectAuru \我们的文件/我们|
答案 0 :(得分:1)
如果目录必须直接位于$base
文件夹下,则只需检查名称是否在glob()
返回的目录列表中即可。
$directories = glob($base . '/*' , GLOB_ONLYDIR);
$copyFrom = '/our';
$copyTo = '/New Folder';
// As $directories will have entries like ./dirname, add . to check
if ( in_array(".".$copyFrom, $directories) && in_array(".".$copyTo, $directories) ) {
echo 'Yes ';
}else{
echo 'NotPresent ';
}
如果您要检查路径是否没有..类型条目,则可以搜索字符串以进行检查(将/
添加到开头可以检查/../
)...
$copyTo = '../../New Folder';
if ( strpos("/".$copyTo, "/../") !== false ) {
echo "trying to change path";
}
else if (is_dir($base.$copyFrom) && is_dir($base.$copyTo)) {
// Paths are OK and directories exist.
}