Перевод римских чисел в обычные (Roman -> Arabic/Integer)

1 августа 2021
Функция переводит строку с римским числом в арабский вариант. Например, число XXXIII будет переведёно в 33

Код на PHP:
<?
/**
 * Переводит число из римской записи в арабскую (обычную) запись
 * @param string $s - римское число
 * @return int
 */
function romanToInt($s)
{
	$r = 0;
	$s = str_replace(array(
		'IV',
       	'IX',
		'XL',
		'XC',
		'CD',
		'CM',

		'I',
		'V',
		'X',
		'L',
		'C',
		'D',
		'M',
	), array(
		' 4 ',
		' 9 ',
		' 40 ',
		' 90 ',
		' 400 ',
		' 900 ',

		' 1 ',
		' 5 ',
		' 10 ',
		' 50 ',
		' 100 ',
		' 500 ',
		' 1000 ',
	), $s);

	$s = explode(' ', $s);
	foreach($s as $v)
	{
		$v = (int)$v;
		$r = $r + $v;
	}

	return $r;
}
?>