我正在使用脚本来比较已安装和可用应用程序的版本号。在正常情况下,我会使用简单的比较运算符。由于我在 PHP 5.3 环境中构建此应用程序,因此我考虑过使用version_compare(),但这似乎并不像我想要的那样干净地满足我的需求。
我正在比较的版本字符串可以遵循多种格式,但到目前为止我遇到的是:
- “2.6.18-164.6.1.el5”与“2.6.18-92.1.13.el5”
- “4.3p2”与“5.1p1”
- “5.1.6”与“5.2.12”
- '2.6.24.4-foo.bar.x.i386' 与 '2.4.21-40'
如您所见,我确实没有一致的格式可以使用。
我考虑做的一件事是将每个版本字符串拆分为非数字字符,然后迭代生成的数组并比较相对索引。但是,我不确定这是否是一种好方法,尤其是在 '2.6.24-4-foo.a.12.i386' 与 '2.6.24-4-foo.b.12' 的情况下.i386'。
是否有任何经过充分测试的方法来比较非常松散的版本号,特别是在 PHP 环境中?