gpt4 book ai didi

php - 如何在 PHP 中将罗马数字转换为整数?

转载 作者:IT王子 更新时间:2023-10-29 01:23:56 26 4
gpt4 key购买 nike

我想使用 PHP 将包含罗马数字的字符串转换为其整数表示形式。我需要这个,因为我需要对它们进行计算。

Wikipedia on Roman numerals

只识别基本的罗马数字字符就足够了,比如:

$roman_values=array(
'I' => 1,
'V' => 5,
'X' => 10,
'L' => 50,
'C' => 100,
'D' => 500,
'M' => 1000,
);

这意味着可能的最高数字是 3999 (MMMCMXCIX)。我将使用 N 来表示零,除此之外只支持正整数。

我不能将 PEAR 库用于罗马数字。

我在 SO 上发现了这个关于如何测试字符串是否包含有效罗马数字的好问题:

How do you match only valid roman numerals with a regular expression?

最好的编码方式是什么?

最佳答案

这个怎么样:

$romans = 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,
);

$roman = 'MMMCMXCIX';
$result = 0;

foreach ($romans as $key => $value) {
while (strpos($roman, $key) === 0) {
$result += $value;
$roman = substr($roman, strlen($key));
}
}
echo $result;

应该为提供的 $roman 输出 3999。它似乎适用于我的有限测试:

MCMXC = 1990
MM = 2000
MMXI = 2011
MCMLXXV = 1975

您可能还想先进行一些验证 :-)

关于php - 如何在 PHP 中将罗马数字转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6265596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com