//Esta fun��o � utilizada pela fun��o ordinal.
//Retorna um n�mero com n zeros � esquerda (string).
Function strzero($valor, $tamanho)
   {
   settype($valor, "string");
   $valor = replicate("0", $tamanho-strlen($valor)).$valor;
   
   return $valor;
   }

//Os par�metros da fun��o ordinal:
//numero - � o n�mero que voc� quer transformar em ordinal
//genero - um string contendo "a" ou "o" para definir o g�nero.
//maiusculas - true para primeiras letras em caixa alta.
//
//A constru��o dos ordinais eu fiz segundo explica��o do Vestibuol.

function ordinal($numero, $genero, $maiusculas = false)
  {
  $numero = strzero($numero, 20);
  
  $elementos[1] = Array("", "primeir", "segund", "terceir", "quart", "quint", "sext", "s�tim", "oitav", "non");
  $elementos[2] = Array("", "d�cim", "vig�sim", "trig�sim", "quadrag�sim", "quinquag�sim", "sexag�sim", "septuag�sim", "octog�sim", "nonag�sim");
  $elementos[3] = Array("", "cent�sim", "ducent�sim", "trecent�sim", "quadringent�sim", "quingent�sim", "seiscent�sim", "septingent�sim", "octingent�sim", "nongent�sim");
  $elementos[4] = "mil�sim";
  $elementos[7] = "milhon�sim";
  $elementos[10] = "bilhon�sim";
  $elementos[13] = "trilhon�sim";
  
  $controle = 3;
  $ordinal = "";
  $soma = 0;
  
  for ($c = 5; $c <= 19; $c++)
     {
     $num = substr($numero, $c, 1);
     settype($num, "integer");
     
     if ($num <> 0 && ($num > 1 || $c > 16))
        {
        $temp_ord = $elementos[$controle][$num];
              
        if ($maiusculas)
           $temp_ord = strtoupper(substr($temp_ord,0,1)).substr($temp_ord,1,strlen($temp_ord)-1);
        
        $ordinal = $ordinal." ".$temp_ord.$genero;
        
        $soma+= $num*10^$controle;
        }
     else if ($num <> 0)
        {
        $soma+= $num*10^$controle;           
        }
     
   
     $controle--;
     
     if ($controle == 0 && $c < 19)
        {
        if ($soma > 1 && isset($elementos[20-$c]))
           { 
           $temp_ord = $elementos[20-$c];
              
           if ($maiusculas)
              $temp_ord = strtoupper(substr($temp_ord,0,1)).substr($temp_ord,1,strlen($temp_ord)-1);
        
           $ordinal = $ordinal." ".$temp_ord.$genero;
           }
           
        $controle = 3;
        $soma = 0;
        }
     }   
  return $ordinal;
  }