Vale, he detectado un error que ya he subsanado añadiendo un = y es que el dia de tu cumpleaños te decia que tenias la edad del dia anterior.
Quedaría así:
Código PHP:
<?
$cadena = "19801012";
$birth1 = substr($cadena, 0, 4);
$birth2 = substr($cadena, 4, 2);
$birth3 = substr($cadena, 6, 2);
if ($birth2 <= date("m")) {
if ($birth2 < date("m")) { echo date("Y") - $birth1; } else {
if ($birth3 <= date("d")){ echo date("Y") - $birth1; } else { echo date("Y") - $birth1 - 1; }
}
} else { echo date("Y") - $birth1 - 1; }
?>