我有一个程序,计算天数,小时数,分钟数或秒数,但它只能接受1个参数,如“1d”= 86400秒。
现在我想让它计算当我给予它一些像“1d 3h 16m 2s“,并传递到秒的数量。同样,当给一个错误的输入,我想让它告诉用户一些像“错误的输入”。
我怎么能做到呢?
这是我到目前为止得到的代码,现在我需要修改它到新的设置seconds calculator
我有一个程序,计算天数,小时数,分钟数或秒数,但它只能接受1个参数,如“1d”= 86400秒。
现在我想让它计算当我给予它一些像“1d 3h 16m 2s“,并传递到秒的数量。同样,当给一个错误的输入,我想让它告诉用户一些像“错误的输入”。
我怎么能做到呢?
这是我到目前为止得到的代码,现在我需要修改它到新的设置seconds calculator
2条答案
按热度按时间hi3rlvi21#
为了匹配几个单位时间,我使用了
preg_match_all()
函数,然后对每个时间单位使用开关迭代。计算每个单位的秒数并求和。PHP在线版:https://onlinephp.io/c/f7d8c
zaq34kh62#
假设没有更高的单位需要解析,并且单位总是按大端顺序排列,那么可以使用一个正则表达式模式来解析字符串中的所有数据,然后使用简单的算术来计算秒数。
正则表达式将尝试捕获每个可选单元的数目。即使给定单元不存在,匹配数组仍将保留该位置,以便元素始终被一致地放置。子模式是相当重复的,因此这将使它更容易在需要时扩展/缩减。
代码:(Demo)
如果输入数据的格式一致,并且总是包含每个单位,那么这个过程就简单得多,因为
sscanf()
可以将数字直接解析为整数。