Senza precisi riferimenti sui caratteri ammessi e non è abbastanza contorto trovare un modo per rendere il codice di facile adattamento...
Fai delle prove e controlla il funzionamento. Unica limitazione, ma indispensabile, è che dovresti impedire l'uso del carattere underscore ( _ ) quando chiedi di inserire il nome per il file da uploadare. Magari lo sotituisci con il trattino ( - ), fai un po' tu.
Per integrarlo al tuo codice inseriscilo al posto di queste righe:
/* $num = "0";
$num++; Qui se faccio cosi mi aumenta fino all'esempio1.jpg
poi se provo a metterne un'altro mi da un errore warning
che dice che il file esiste già, questo lo so ma non so come rimediare
*/
$fileupload_name = preg_replace("/(w+)(.w+)/","\${1}$num\$2",$fileupload_name);
Codice PHP:
//se il file esiste ed ha un nome standard tipo "esempio.txt"
//e, fondamentale, senza nessun carattere underscore ( _ )
//verrà semplicemente rinominato in "esempio_1.txt"
$f = &$fileupload_name;
if(!preg_match("/.+(_)\\d*\\.\\w+/", $f)) {
$f = preg_replace("/(\\w+)(\\.\\w+)/", "\\${1}_1\\$2", $f);
} else {
//se invece il file esiste ma ha già un nome tipo "esempio_1.txt"
//verrà rinominato aumentando progressivamente il numero che lo
//identifica. Es: esempio_2.txt, esempio_3.txt, etc...
$i = preg_match("/(.+)_(\\d+)\\.(.+)/", $f, $mth);
$i = $mth[2] +1;
$f = preg_replace("/(.+)(_\\d+\.)(.+)/", "\\$1_$i.\\$3", $f);
}