如果文件夹中存在文件名,请使用php添加标识?

时间:2012-03-21 07:01:28

标签: php html

我的想法是,如果存在文件,请将文件名添加到文件名。(1).html等, 这是我的代码。但是如果存在(数字),我无法弄清楚如何检查文件名 。 那么如何检查并追加(1)...如果存在?

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.1 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
</head>
<body>

<?php

session_start();
if($_SERVER['REQUEST_METHOD'] == "POST"){
$editorData = $_POST[ 'editor1' ];
$fileName = $_POST[ 'tname' ];
$uid= $_SESSION['username'];

$filePath ="../template/".$uid."/";
$myFile = $fileName.".html";

if (!file_exists($filePath)) {
mkdir($filePath, 0755);
}

if (file_exists($filePath.$myFile)) {
$myFile = $fileName."(".$num.")".html";
}



$fh = fopen($filePath.$myFile, 'w') or die("Can not open file");
fwrite($fh, $editorData);
fclose($fh);

echo "You have created a template. You can close this tab now";

}

?>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

您可以使用glob查找与您的文件名和以下编号匹配的所有文件,然后您可以对这些文件进行计数,以确定下一个文件的名称。

由于您的第一个文件不遵循与以下相同的命名方案,因此您必须自行计算该文件。

// Check if a file with the exact name exists
if(file_exists($filePath.$myFile)){
    // It does - the next number should be 1
    $num = 1;
    // Check how many more files with the name followed by a number exists
    $existingFiles = glob($filePath.$fileName.'([0-9]*).html');
    $num += count($existingFiles);
    // Create the new name of the file
    $myFile = $fileName."(".$num.")".html";
}

请注意,如果您允许删除文件,这将无效,因为现有文件的数量不再保证等于列表中的最高数量。