//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; }