1

基本的には、ファイルが存在するたびに番号を追加していきたいと思います。したがって、$url.php存在する場合は、それを作成し$url-1.phpます。存在する場合$url-1.phpは、それを作成$url-2.phpします。

これは私がすでに思いついたものですが、それは初めてしか機能しないと思います。

if(file_exists($url.php)) {
    $fh = fopen("$url-1.php", "a");
    fwrite($fh, $text);
} else {
    $fh = fopen("$url.php", "a");
    fwrite($fh, $text);
}
fclose($fh);
4

4 に答える 4

2

whileこのようなシナリオではループを使用します。

$filename=$url;//Presuming '$url' doesn't have php extension already
$fn=$filename.'.php';
$i=1;
while(file_exists($fn)){
   $fn=$filename.'-'.$i.'.php';
   $i++;
}
$fh=fopen($fn,'a');
fwrite($fh,$text);
fclose($fh);

とはいえ、このソリューションの方向性はうまく拡張できません。あなたは定期的に100以上をチェックしたくありませんfile_exists

于 2011-10-20T01:29:12.750 に答える
2

カウンター変数でwhileループを使用します$ifile_exists()falseが返されるまで、カウンターをインクリメントし続けます。その時点で、whileループが終了し、 ;fopen()の現在の値を使用してファイル名を呼び出します。$i

if(file_exists("$url.php")) {
  $fh = fopen("$url-1.php", "a");
  fwrite($fh, $text);
} else {
  $i = 1;
  // Loop while checking file_exists() with the current value of $i
  while (file_exists("$url-$i.php")) {
    $i++;
  }

  // Now you have a value for `$i` which doesn't yet exist
  $fh = fopen("$url-$i.php", "a");
  fwrite($fh, $text);
}
fclose($fh);
于 2011-10-20T01:30:09.963 に答える
0

私はこのようなものを探していて、私のニーズに合わせてShadの答えを拡張しました。fileuploadがサーバー上にすでに存在するファイルを上書きしないことを確認する必要があります。私はそれがまだ「保存」されていないことを知っています、なぜならそれは拡張子のないファイルを処理しないからです。しかし多分それは誰かのための少しの助けです。

        $original_filename = $_FILES["myfile"]["name"];
        if(file_exists($output_dir.$original_filename))
        {

            $filename_only = substr($original_filename, 0, strrpos($original_filename, "."));
            $ext = substr($original_filename, strrpos($original_filename, "."));

            $fn = $filename_only.$ext;
            $i=1;
            while(file_exists($output_dir.$fn)){
               $fn=$filename_only.'_'.$i.$ext;
               $i++;
            }
        }
        else
        {
            $fn = $original_filename;
        }
于 2014-03-07T15:27:42.157 に答える
-1
<?php
$base_name = 'blah-';
$extension = '.php';
while ($counter < 1000 ) {
    $filename = $base_name . $counter++ . $extension; 
    if ( file_exists($filename) ) continue;
}
$fh = fopen($filename, "a");
fwrite($fh, $text);
fclose($fh);
于 2011-10-20T01:29:16.813 に答える