Código PHP:
function verificarBisiesto($edValor)
{
$j=0;
while($edValor[$j]<>'/')
{
$j++;
}
$es="error"; // indica si es falso o verdadero
$salir=false; // mientras sea falso verifica....
$estado=0;
$delantero=0;
$longitud=strlen($edValor);
while(!$salir)
{
switch($estado)
{
case 0:
$c=$edValor[$delantero];
$delantero++;
if ($this->esDigito($c))
{
if($j==1)
{
if (($c=='0')||($c=='4')||($c=='8'))
{
$estado=6;
}
else //if (($c=='1')||($c=='3')||($c=='5')||($c=='7')||($c=='9'))
{
$estado=5;
}
}
elseif($j==2)
{
if (($c=='0')||($c=='2')||($c=='4')||($c=='6')||($c=='8'))
{
$estado=3;
}
else //if (($c=='1')||($c=='3')||($c=='5')||($c=='7')||($c=='9'))
{
$estado=4;
}
}
else //($j>2)
{
$j--;
$estado=0;
}
}//fin if
else
{
$estado=35;
}
break;
case 1:
$c=$edValor[$delantero];
$delantero++;
if ($this->esDigito($c))
{
if($j>2)
{
$estado=0;
}
$estado=2;
}
else
$estado=35;
break;
case 2:
$c=$edValor[$delantero];
$delantero++;
if (($c=='0')||($c=='2')||($c=='4')||($c=='6')||($c=='8'))
{
$estado=3;
}
elseif(($c=='1')||($c=='3')||($c=='5')||($c=='7')||($c=='9'))
{
$estado=4;
}
else
$estado=35;
break;
case 3:
$c=$edValor[$delantero];
$delantero++;
if (($c=='0')||($c=='4')||($c=='8'))
{
$estado=6;
}
elseif (($c=='1')||($c=='3')||($c=='5')||($c=='7')||($c=='9'))
{
$estado=5;
}
else
$estado=35;
break;
case 4:
$c=$edValor[$delantero];
$delantero++;
if (($c=='2')||($c=='6'))
{
$estado=6;
}
else
$estado=35;
break;
case 5:
$c=$edValor[$delantero];
$delantero++;
if ($c=='/')
{
$estado=7;
}
else
$estado=35;
break;
case 6:
$c=$edValor[$delantero];
$delantero++;
if ($c=='/')
{
$estado=8;
}
else
$estado=35;
break;
case 7:
$c=$edValor[$delantero];
$delantero++;
if ($c=='0')
{
$estado=11;
}
elseif ($c=='1')
{
$estado=12;
}
else
$estado=35;
break;
case 8:
$c=$edValor[$delantero];
$delantero++;
if ($c=='0')
{
$estado=9;
}
elseif ($c=='1')
{
$estado=10;
}
else
$estado=35;
break;
case 9:
$c=$edValor[$delantero];
$delantero++;
if (($c=='1')||($c=='3')||($c=='5')||($c=='7')||($c=='8'))
{
$estado=13;
}
elseif (($c=='2'))
{
$estado=14;
}
elseif (($c=='4')||($c=='6')||($c=='9'))
{
$estado=15;
}
else
$estado=35;
break;
case 10:
$c=$edValor[$delantero];
$delantero++;
if (($c=='0')||($c=='2'))
{
$estado=13;
}
elseif ($c=='1')
{
$estado=15;
}
else
$estado=35;
break;
case 11:
$c=$edValor[$delantero];
$delantero++;
if ($c=='2')
{
$estado=16;
}
elseif (($c=='1')||($c=='3')||($c=='5')||($c=='7')||($c=='8'))
{
$estado=17;
}
elseif (($c=='4')||($c=='6')||($c=='9'))
{
$estado=18;
}
else
$estado=35;
break;
case 12:
$c=$edValor[$delantero];
$delantero++;
if (($c=='0')||($c=='2'))
{
$estado=17;
}
elseif ($c=='1')
{
$estado=18;
}
else
$estado=35;
break;
case 13:
$c=$edValor[$delantero];
$delantero++;
if ($c=='/')
{
$estado=19;
}
else
$estado=35;
break;
case 14:
$c=$edValor[$delantero];
$delantero++;
if ($c=='/')
{
$estado=20;
}
else
$estado=35;
break;
case 15:
$c=$edValor[$delantero];
$delantero++;
if ($c=='/')
{
$estado=21;
}
else
$estado=35;
break;
case 16:
$c=$edValor[$delantero];
$delantero++;
if ($c=='/')
{
$estado=22;
}
else
$estado=35;
break;
case 17:
$c=$edValor[$delantero];
$delantero++;
if ($c=='/')
{
$estado=23;
}
else
$estado=35;
break;
case 18:
$c=$edValor[$delantero];
$delantero++;
if ($c=='/')
{
$estado=24;
}
else
$estado=35;
break;
case 19:
$c=$edValor[$delantero];
$delantero++;
if ($c=='0')
{
$estado=25;
}
elseif (($c=='1')||($c=='2'))
{
$estado=36;
}
elseif ($c=='3')
{
$estado=26;
}
else
$estado=35;
break;
case 20:
$c=$edValor[$delantero];
$delantero++;
if ($c=='0')
{
$estado=25;
}
elseif (($c=='1')||($c=='2'))
{
$estado=36;
}
else
$estado=35;
break;
case 21:
$c=$edValor[$delantero];
$delantero++;
if ($c=='0')
{
$estado=25;
}
elseif (($c=='1')||($c=='2'))
{
$estado=36;
}
elseif ($c=='3')
{
$estado=27;
}
else
$estado=35;
break;
case 22:
$c=$edValor[$delantero];
$delantero++;
if ($c=='0')
{
$estado=28;
}
elseif ($c=='1')
{
$estado=29;
}
elseif ($c=='2')
{
$estado=30;
}
else
$estado=35;
break;
case 23:
$c=$edValor[$delantero];
$delantero++;
if ($c=='0')
{
$estado=28;
}
elseif (($c=='1')||($c=='2'))
{
$estado=29;
}
elseif ($c=='3')
{
$estado=31;
}
else
$estado=35;
break;
case 24:
$c=$edValor[$delantero];
$delantero++;
if ($c=='0')
{
$estado=28;
}
elseif (($c=='1')||($c=='2'))
{
$estado=29;
}
elseif ($c=='3')
{
$estado=32;
}
else
$estado=35;
break;