1
if(!empty($_POST['newdir'])) {
$dir_base= preg_replace("/[^a-zA-ZÀ-ÿ0-9\s]/",'',$_POST['newdir']);
$dir_path=$pattern.$dir_base;
$dir_path_lwr = strtolower($dir_path);
$old_dirs = glob($pattern.'*', GLOB_ONLYDIR);
$old_dirs_lwr = array_map('strtolower', $old_dirs);
$i = 1;
$cond = true;
while($cond) {
if(in_array($dir_path_lwr, $old_dirs_lwr)) {
$i++;
$new_base=$dir_base.' '.$i.'';
$new_path= $pattern.$new_base;
$dir_path_lwr = strtolower($new_path);
}
elseif(!in_array($dir_path_lwr, $old_dirs_lwr)) {
mkdir($dir_path, 0755);
$cond = false;
}
}
}
编辑已将上述内容更改为最新版本。对于测试,我现在只是回应$cond
var而不是在整个地方创建目录。 'Not In'参数工作正常 - 当发现重复的名字时,在白色筛选之前,页面需要大约10到12秒才能加载。有什么毛病我while循环,我认为......PHP:创建独特的目录名称
我试图做的是:
- 提交新的目录名称到脚本
- 清洁,逃离这个名字
- 检查其对现有目录中的那个位置(
$pattern
) - 如果没有冲突,创建目录(作品)
- 如果有冲突,追加一个数字(例如,我的目录2)然后创建目录(不起作用)
因此,基本上如何检查现有的文件名,并动态地创建一个唯一的名称目录。所有帮助表示赞赏:)
您还可以找到在此非常类似的问题的一些替代方法:http://stackoverflow.com/q/1707801/176974 – jap1968 2015-03-06 09:23:43