Muchas veces es necesario tener que mostrar números romanos, ya sea para tomos de capítulos o porque estéticamente quedan bien en nuestra página. Gracias a la siguiente función, es posible convertir números enteros en números romanos en PHP.

<?php 
function convertirNum($num){
    // intval(xxx) para que convierta explícitamente a int
    $n = intval($num);
    $res = '';
    // Array con los números romanos
    $roman_numerals = array('M' => 1000, 'CM' => 900, 'D' => 500, 'CD' => 400, 'C' => 100, 'XC' => 90, 'L' => 50, 'XL' => 40, 'X' => 10, 'IX' => 9, 'V' => 5, 'IV' => 4, 'I' => 1);
    foreach ($roman_numerals as $roman => $number) {
        // Dividir para encontrar resultados en array
        $matches = intval($n / $number);
        // Asignar el numero romano al resultado
        $res .= str_repeat($roman, $matches);
        // Descontar el numero romano al total
        $n = $n % $number;
    }
    // Res = String
    return $res;
}
?>

Para utilizar la función de convertir números enteros en números romanos en PHP, lo único que deberemos hacer es copiar y pegarla en nuestro código al final o al principio del mismo. Luego si queremos convertir un número, realizamos lo siguiente:

<?php 

echo "El número 100 en números romanos es: <strong>" . convertirNum(100) . "</strong>";
echo "<br/>";
echo "El número 799 en números romanos es: <strong>" . convertirNum(799) . "</strong>";

function convertirNum($num){
    // intval(xxx) para que convierta explícitamente a int
    $n = intval($num);
    $res = '';
    // Array con los números romanos
    $roman_numerals = array('M' => 1000, 'CM' => 900, 'D' => 500, 'CD' => 400, 'C' => 100, 'XC' => 90, 'L' => 50, 'XL' => 40, 'X' => 10, 'IX' => 9, 'V' => 5, 'IV' => 4, 'I' => 1);
    foreach ($roman_numerals as $roman => $number) {
        // Dividir para encontrar resultados en array
        $matches = intval($n / $number);
        // Asignar el numero romano al resultado
        $res .= str_repeat($roman, $matches);
        // Descontar el numero romano al total
        $n = $n % $number;
    }
    // Res = String
    return $res;
}

De esta manera, nuestro resultado se vera de la siguiente manera:

El número 100 en números romanos es: C
El número 799 en números romanos es: DCCXCIX

La función para convertir números romanos la pueden reutilizar tantas veces quieran en los programas que quieran.

Copyright © 2018-2020 Latirus. Todos los Derechos Reservados.