Esta função serve para gerar números Romanos em PHP (com letras maiúsculas). Para converter para minúsculas, basta usar a função strtolower.
Linguagem: PHP
Copyright 2011 Rubens Takiguti Ribeiro
Licença: LGPL 3 ou superior
/**
* Converte de numero arabico para romano
* @param int $numero numero arabico
* @return string numero romano em letras maiusculas
*/
function numero_romano($numero) {
if ($numero <= 0 || $numero > 3999) {
return $numero;
}
$n = (int)$numero;
$y = '';
// Nivel 1
while (($n / 1000) >= 1) {
$y .= 'M';
$n -= 1000;
}
if (($n / 900) >= 1) {
$y .= 'CM';
$n -= 900;
}
if (($n / 500) >= 1) {
$y .= 'D';
$n -= 500;
}
if (($n / 400) >= 1) {
$y .= 'CD';
$n -= 400;
}
// Nivel 2
while (($n / 100) >= 1) {
$y .= 'C';
$n -= 100;
}
if (($n / 90) >= 1) {
$y .= 'XC';
$n -= 90;
}
if (($n / 50) >= 1) {
$y .= 'L';
$n -= 50;
}
if (($n / 40) >= 1) {
$y .= 'XL';
$n -= 40;
}
// Nivel 3
while (($n / 10) >= 1) {
$y .= 'X';
$n -= 10;
}
if (($n / 9) >= 1) {
$y .= 'IX';
$n -= 9;
}
if (($n / 5) >= 1) {
$y .= 'V';
$n -= 5;
}
if (($n / 4) >= 1) {
$y .= 'IV';
$n -= 4;
}
// Nivel 4
while ($n >= 1) {
$y .= 'I';
$n -= 1;
}
return $y;
}
1 comentário
Tava tentando fazer uma função no mysql pra isso.
Gostei bastante da tua lógica, vou seguir ela pra fazer!
Obrigado, Rubens!
Postar um comentário
Nota: fique a vontade para expressar o que achou deste artigo ou do blog.
Dica: para acompanhar as respostas, acesse com uma conta do Google e marque a opção "Notifique-me".
Atenção: o blogger não permite inclusão de tags nos comentários, por isso, use algum site externo para postar seu código com dúvidas e deixe o link aqui. Exemplo: pastebin.com