Si el nombre del archivo existe, devuelve un nuevo nombre de archivo con _number agregado para que no lo sobrescriba.
function file_newname($path, $filename)( if ($pos = strrpos($filename, '.')) ( $name = substr($filename, 0, $pos); $ext = substr($filename, $pos); ) else ( $name = $filename; ) $newpath = $path.'/'.$filename; $newname = $filename; $counter = 0; while (file_exists($newpath)) ( $newname = $name .'_'. $counter . $ext; $newpath = $path.'/'.$newname; $counter++; ) return $newname; )
Devuelve el ejemplo:
myfile.jpg.webp
myfile_0.jpg.webp
myfile_1.jpg.webp