Я работаю со сценарием для сравнения номеров версий установленных и доступных приложений. Обычно я бы использовал простые операторы сравнения. Поскольку я создаю это приложение в среде 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?