a me sembra corretta, il problema e che non me la prende

forse sbaglio qualcosa che gira attorno alle mie espressioni!

io ho un foglio php dove ci sono n funzioni... le mie funzioni per i controlli con le espressioni regolari...
controllano email, numeri,caratteri, etc...

la prima e la mail e funziona alla grande le altre sotto non molto ...
nel senso che mi riportano un true e un false , ma in maniera errata e a volte riportano solo false o solo true...

il foglio lo includo nella mia pagina principale in maniera da averle sempre disponibili!

Codice PHP:
include ("../../funzioni/controlli.php");
//richamo i valori via post ...

//controllo le espressioni
if ( (empty($coddeb))||(empty($ragsoc))||(empty($indi))||(empty($city))||(empty($pro))||(empty($e_mail))||(empty($p_iva))||(empty($cfisc))||(empty($rifdebit))||(empty($numerofatture)) ){
     
$reindirizzo_vuoti true;
}
//Verifiche integrità campi (FALSE=sbagliata | TRUE=giusta)
if ($reindirizzo_vuoti == false){
    
    
//MAIL
    
$controllo_mail controllo_mail($e_mail);
    if (
$controllo_mail){
        
$mailControl true;
    }else{
        
$mailControl false;
    }    

//CITTA carattere
    
$controllo_citta caratteri($city);
    if (
$controllo_citta){
            
$cittaControl true;
    }else{
            
$cittaControl false;
    }

//se trova errori redirect
if ($reindirizzo_vuoti){
            
header("Location:../../index.php?id_user=$idget&pag=insdeb&pieni=si");
    }else if (!
$mailControl){
            
header ("Location:../../index.php?id_user=$idget&pag=insdeb&pieni=mail");
        }else if (!
$cittaControl){
            
header("Location:../../index.php?id_user=$idget&pag=insdeb&pieni=cit"); 
ovviamente nell'altra pagina riprendo le variabili in get e stampo l'avviso dove voglio!

le mie espressioni sono queste

Codice PHP:
function controllo_mail($var_mail) {
    
$result ereg("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)$",$var_mail);
    if(
$result == false){
        return 
false;
    }else{
        return 
true;
    }
}

//controllo caratteri
function caratteri($var){
    
$result ereg("^[a-zA-Z]+$",$var);
    if (
$result == false){
        return 
false;
    }else{
        return 
true;
    }

se in citta lascio cosi la mia espressione qualunque cosa metto mi restituisce false.
se metto le parentesi mi da false quando è giusta!
non vedo l'errore ...
grazie dell'aiuto