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);