次の関数を使用して、サムネイルの名前を変更します。
たとえば、「image.png」というファイルをアップロード フォルダーにアップロードすると、このフォルダーに「image.png」という名前のファイルが既に存在し、新しいファイルの名前は自動的に「image-copy-1.png」に変更されます。 "。「image-copy-1.png」というファイルもある場合は、「image-copy-2.png」などに名前が変更されます。
次の関数は、新しいファイル名を返します。少なくともそれが本来の目的です...
ただし、名前の変更は正しく機能していないようです。時々、次のような奇妙な結果が生成されます: (私は常に「1.png」という名前のファイルをアップロードしました)
1-copy-1.png
1-copy-2.png
1-copy-2-copy-1.png
1-copy- 2-copy-3.png
私の説明は多少複雑ですが、私の問題を理解していただければ幸いです...ここで何が問題だったのか教えていただけますか? (おまけの質問: 正規表現はこの種のことを行うための適切なツールですか?)
<?php
function renameDuplicates($path, $file)
{
$fileName = pathinfo($path . $file, PATHINFO_FILENAME);
$fileExtension = "." . pathinfo($path . $file, PATHINFO_EXTENSION);
if(file_exists($path . $file))
{
$fileCopy = $fileName . "-copy-1";
if(file_exists($path . $fileCopy . $fileExtension))
{
if ($contains = preg_match_all ("/.*?(copy)(-)(\\d+)/is", $fileCopy, $matches))
{
$copyIndex = $matches[3][0];
$fileName = substr($fileCopy, 0, -(strlen("-copy-" . $copyIndex))) . "-copy-" . ($copyIndex + 1);
}
}
else
{
$fileName .= "-copy-1";
}
}
$returnValue = $fileName . $fileExtension;
return $returnValue;
}?>