重新格式化“#h #m #s”中的时间表达式字符串到“#:#:#”
我有 2 个带有时间的输入框。
我得到的值的格式类似于 3h 20m 31s
。
如何获取此输入并将其转换为 3:20:31
以便我可以在数据库中使用它?
I have 2 input boxes with times.
The values that I get back are formatted like 3h 20m 31s
.
How do I take this input and turn this into 3:20:31
so I can use it in my database?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
无需使用正则表达式。如果你有固定的格式,你可以这样做
或者如果你热衷于正则表达式:
No need to use regexes. If you have fixed format you can just do
Or if you are keen for regexes:
如果您的字符串始终有效,并且您只需要清理/重新格式化字符串,那么可以使用以下示例数据通过以下几种方法来显示前导零的保留: (
$input = "3h 09m 01s";< /code>) 演示
替换
h
或m
后跟一个带有冒号的空格,s
后面什么都没有。使用占位符解析字符串,然后加入填充的数组:
将字符串拆分为非数字,然后加入填充的数组:
如果您还需要验证,则可以使用
preg_match()
(如果您想执行条件行为)或使用preg_filter( )
将不合格的字符串减少为null
。我个人可能会选择
preg_filter()
,因为在接收发往数据库的格式错误的值时,回退到null
通常是一个好主意。最后,如果有效输入可能不具有某些组件(例如没有分钟表达式),那么其中一些片段将变得不兼容。
If your strings are always valid and you just need to sanitize/reformat the string, then here are a few ways with the following sample data to show the preservation of leading zeros: (
$input = "3h 09m 01s";
) DemoReplace
h
orm
followed by a space with a colon ands
with nothing.Parse the string using placeholders, then join the populated array:
Split the string on non-digits, then join the populated array:
If you also require validation, you can use
preg_match()
if you want to perform conditional behavior or usepreg_filter()
to reduce disqualified strings tonull
.I'd probably opt for
preg_filter()
personally because falling back tonull
is typically a good idea when receiving malformed values destined for the database.Lastly, if it is possible for valid input to not have certain components (such as no minutes expression), then some of these snippets become incompatible.