php新建檔案自動編號的思路與實現

2022-04-08 02:37:40 字數 1793 閱讀 9458

要求:在系統中 在新建檔案是可以實現自動編號。比如新建文字檔案 預設檔名是:新建 文字文件.txt,如果繼續新建時檔名自動變了:新建 文字文件 (2).txt, 以後就是 3,4,5….請問這種演算法用php怎麼實現。

思路,原來想用迴圈來做,後來想想,用計數器遞增吧,簡單高效,這個tme可以是資料庫,可以檔案,可以是配置檔案,看你怎麼做了,迴圈只是在維護的時候使用的,如果每建乙個新檔案也得迴圈一次,那得累死,快取無處不在

複製** **如下:

<?php

$dir="/web/csp/images/test/";

if(!file_exists($dir.'cache.txt'))else?>

銀子童鞋重寫後的

複製** **如下:

<?php

function createfile($filename, $content = '')

else }

createfile('test.txt');

?>

第三種,迴圈的

複製** **如下:

<?php

$files = scandir('.'); //此**在web根目錄下寫就

$num = 0;

$str = '新建 文字文件';

foreach ($files as $k=> $file)

} $filename = $num == 0 ? $str . '(1).txt' : $str . '(' . ($num+1) . ').txt';

if (fopen($filename, 'w'))

?>

以下是網友的回覆:

1.關於第一段**的.

在自動新建幾個檔案之後,

比如:現在的新建出來的檔案有

新建檔案.txt

新建檔案 (2).txt

新建檔案 (3).txt

這三個檔案,如果這個時候刪除了

新建檔案 (2).txt

新建檔案 (3).txt

這兩個,然後再執行那個php,因為cache.txt計數的問題,再執行的時候新建的檔案是

新建檔案 (4).txt

並沒有智慧型的根據序列建立.

而上面的操作,在windows下的結果 新建出來的檔名應該是

新建檔案 (2).txt

2.關於第二段的.

首先,肯定也存在上面的問題,而更為嚴重的是,建立出來的檔案,檔名與副檔名的 . 分隔符丟了..

即: test.txt

test(2)txt

test(3)txt

test(4)txt

究其原因是因為,在組合檔名的時候.沒有把副檔名的點給加上去.

複製** **如下:

file_put_contents($fileinfo['filename'] . '(' . $num . ')' .$fileinfo['extension'], $content);

來段更好玩的,更短的.

效率應該會比上面的使用快取(tmp檔案)或者正則(preg_match)的好很多.

複製** **如下:

<?php

$prefix = '新建 文字文件';

$suffix = '.txt';

$t = $prefix.$suffix;//新建 文字文件.txt

$i = 1;

while(file_exists($t))

fclose(fopen($t, 'w'));

?>

PHP 簡單的自定義新建檔案列印

ary 要寫入資料 filename 要寫入檔案 的檔名 files 檔案隸屬 的資料夾 k 資料寫入開頭 function data log ary error filename error.txt files error k else fp fopen files filename,a 嘗試開啟...

Access 中自動編號的解決思路

如何在 access 中插入一條新的記錄時,預先知道他的自動編號id呢?這個問題困擾了我很久 後來我想了乙個很笨辦法 就是先插入一條 隨意的資料 當然裡面有有乙個你實現預定好的標識 比如 insert into cmd classid,cmdtype,cmd values temp temp tem...

修改vs新建檔案的模板

參考 模板檔案在vs安裝目錄d program files microsoft visual studio 10.0 common7 ide 一般修改d program files microsoft visual studio 10.0 common7 ide itemtemplatescache...