요구 사항: 시스템에서 새 파일을 생성할 때 자동 번호 매기기를 구현할 수 있습니다. 예를 들어 새 텍스트 파일의 기본 파일 이름은 New Text Document.txt입니다. 계속해서 새 텍스트 파일을 생성하면 파일 이름이 자동으로 New Text Document (2).txt로 변경됩니다. 3, 4, 5가 될 것입니다. PHP에서 이 알고리즘을 어떻게 사용합니까?
원래는 루프를 사용하려고 했으나 생각해보니 카운터를 사용하여 증가시켰습니다. 이 TME는 데이터베이스, 파일 또는 구성 파일이 될 수 있습니다. . 루프는 유지 관리에만 사용됩니다. 새 파일을 만들 때마다 캐시가 소모됩니다.
코드는 다음과 같습니다. 다음:
$dir="/web/csp/images/test/"
if(!file_exists($dir.'cache.txt')){
file_put_contents ($dir.'cache.txt',1);
file_put_contents($dir.'새 file.txt','')
}else{
$num = file_get_contents($dir.' 캐시.txt');
$num ++;
$name = ' 새 파일 생성('.$num.').txt'
file_put_contents($dir.'cache.txt', $num);
file_put_contents($dir.$name,'');
}?>
if(file_exists($filename . '.tmp'))
{
$num = (int) file_get_contents($filename . '.tmp') + 1;
$fileinfo = pathinfo( $filename)
file_put_contents($fileinfo['filename'] . '(' . $num . ' ).' .$fileinfo['확장자'], $content);
file_put_contents($filename . ' .tmp', $num)
}
else
{
file_put_contents( $filename, $content)
file_put_contents($filename . '.tmp', 1)
}
}
createFile('test.txt')?> 🎜>
세 번째 유형, 원형
코드 복사
php
$files = scandir('.'); 웹 루트 디렉터리
$num = 0;
$str = '새 텍스트 문서'
foreach ($files as $k=> $file) {
if (is_file($) 파일) && preg_match('/(.*)((d+)).txt/', $file, $matched) ) {
$num = $matched[2]>$num ? : $num
}
}
$filename = $num == 0 ? $str . '(' . ($num+1) . ).txt';
if (fopen($filename, 'w')) {
echo '파일 생성 성공: ' . $filename; 예: 현재 새로 생성된 파일 파일에는
새 파일(2).txt
새 파일(2).txt
새 파일(3).txt
이 세 파일이 포함됩니다.
새 파일(2).txt New File(3).txt
이때 해당 PHP를 실행한 후 Cache.txt 계산 문제로 인해 다시 실행하면 새로 생성된 파일은
New File(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)을 사용하는 것보다 효율성이 훨씬 좋습니다.
복사합니다. code 코드는 다음과 같습니다.
$prefix = '새 텍스트 문서';
$suffix = '.txt'
$t = $prefix .$suffix;/ /새 텍스트 문서.txt
$i = 1;
while(file_exists($t)){//새 텍스트 문서(d+).txt
$t = $prefix. +$i.')'.$suffix;
}
fclose(fopen($t, 'w'))
?>