微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 如何在字符串中比较版本#?

我需要比较两个版本#,看看一个是否比另一个更大,并且我真的很难这样做.

版本1:test_V10.1.0.a.1@example
版本2:test_V9.7.0_LS@example

我已经尝试剥离所有非数字字符,所以我会留下:

版本1:10101
版本2:970

从10.1.0.a.1中删除了’a’,这样就没有用了,我尝试在’test_’和’@’之间取消所有内容,然后在下划线’_’和下划线右侧删除任何内容本身,但我仍然要在字符串的开头删除’V’.

即使我可以达到10.1.0.a.1和9.7.0,我怎么能比较这两个呢?我怎么知道10.1.0.a.1是否大于9.7.0?如果我删除小数点,我仍然在1010a1中留下一个非数字字符,但我需要该字符,以防发布版本我将其与10.1.0.b.1进行比较,这将大于10.1.0.a.1.

这让我疯了,以前有人处理过这个吗?你是如何比较价值的?我正在使用PHP.

解决方法:

我想你想考虑使用正则表达式来解析版本号的“数字”部分 – “10.1.0.a.1”和“9.7.0”.在那之后,你可以通过’.’到split.得到两个“版本数组”.

使用版本数组,您可以弹出元素,直到找到更高的数字.它来自哪个阵列是更高的版本号.如果任一阵列用完,则版本号较小(除非所有剩余的元素都是“0”或“a”或用于表示“基本版本”的任何语义,例如“10.0.0.a.0”== “10.0”).如果两者同时耗尽,那么它们就是平等的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐