インストール済みのアプリケーションと使用可能なアプリケーションのバージョン番号を比較するスクリプトを使用しています。通常、単純な比較演算子を使用します。私はこのアプリケーションを 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」
ご覧のとおり、私が作業するための一貫した形式は実際にはありません。
私が検討したことの 1 つは、各バージョン文字列を数値以外の文字で分割し、結果の配列を反復して相対インデックスを比較することでした。ただし、特に「2.6.24-4-foo.a.12.i386」と「2.6.24-4-foo.b.12」の場合、それが良い方法かどうかはわかりません.i386'.
特にPHP環境で、このような非常に緩いバージョン番号を比較する十分にテストされた方法はありますか?