porta pazienza:

allora ho trovato l' espressione ^[a-zA-Z]+$ che dovrebbe verificare che il parametro passato sia una stringa che NON contiene numeri

quindi trasformo la tua espressione così:

per vedere se la stringa passata sia una stringa di $lunghezza caratteri (senza spazio)
if(preg_match('/^[a-zA-Z]+${'.$lunghezza.'}$/', $ndc)){.....}

mentre per vedere se è solo stringa

if(preg_match('/^[a-zA-Z]+$/', $sdc)){.....}

giusto???