eccolo:

$data_anno_oggi=date("Y");
$data_mese_oggi = date("n");
$data_giorno_oggi = date("d");

$data1 = mktime(0, 0, 0, $data_giorno_oggi, $data_mese_oggi, $data_anno_oggi, 0);

$data2 = mktime(0, 0, 0, $eta_giorno, $eta_mese_n, $eta_anno, 0);

$giorni_diff=($data1 - $data2)/(60*60*24);

if (intval($giorni_diff>(365*18))) {$eta_maggiore_18='si';} else {$eta_maggiore_18='no';}
ma il punto non cambia, così non tengo conto degli anni bisestili.
Ok che potrei dire: in 18 anni al massimo ci sono 4 anni bisestili, per cui posso modificare:

intval($giorni_diff>(365*18))
in
intval($giorni_diff>(365*18+4))

però ottengo sempre un risultato che è "quasi" giusto, ma non correttissimo lo stesso.
Per essere pignoli (e non fare figuracce con gli utenti) come si può migliorare il codice?