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