>  기사  >  백엔드 개발  >  PHP에서 새 파일의 자동 번호 매기기 아이디어 및 구현

PHP에서 새 파일의 자동 번호 매기기 아이디어 및 구현

高洛峰
高洛峰원래의
2016-11-30 09:30:381858검색

요구 사항: 시스템에서 새 파일을 생성할 때 자동 번호 매기기를 구현할 수 있습니다. 예를 들어 새 텍스트 파일의 기본 파일 이름은 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')?> 🎜>
세 번째 유형, 원형 ​​
코드 복사

$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'))
?>

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.