php - 解析字符串上的比较和版本号
问题描述
我有版本字符串,例如>=1.0.0.1
字符串也可以是<2.0
, 或<0.1-alpha
. 如何始终将字符串解析为分隔值,例如">="
-"1.0.0.1"
或"<"
- "0.1-alpha
"`?
这是我到目前为止所拥有的并且它有效,但我发现它非常丑陋/凌乱。任何清理它的提示将不胜感激。
我正在使用 Laravel(欢迎使用字符串助手)。这也必须适用于其他版本的字符串示例。它总是紧随comparison
其后version
:
>=1.0.0
<3.0
>0.01-alpha
... ETC
public function test_version_compare()
{
$version = ">=4.0.0";
$resolved_comparison = null;
$resolved_version = null;
$version_array = str_split($version);
foreach ($version_array as $key => $array) {
if (is_numeric($array)) {
$version_pos = $key;
break;
}
}
foreach ($version_array as $key => $array) {
if ($version_pos > $key) {
$resolved_comparison = $resolved_comparison.$array;
} else {
$resolved_version = $resolved_version.$array;
}
}
$this->assertEquals('>=', $resolved_comparison);
$this->assertEquals('4.0.0', $resolved_version);
}
解决方案
推荐阅读
- wordpress - 如何创建一个显示我的供应商主页 URL 而不是我的网站的 URL 框架?
- perl - Perl:是否可以撤消 SIG{INT} 捕获?
- reactjs - React App 的 Favicon 在 Firefox 中不会改变,但是 Chrome 可以工作
- html - 循环这个以显示所有值,而不是只显示最后一个(邮政编码)
- python - 枕头图像不透明
- delphi - 如何使用 TClientDataSet 定位包含的字符串
- android - Android ScrollView:如何使用约束布局创建带有静态页眉和页脚的滚动视图
- ruby-on-rails - 如何使用rspec测试rails中的缓存过期?
- jenkins - jq: select 未被识别为内部或外部命令
- ios - 如何修复我的构建:具有 CocoaPods 依赖项和 2 个目标(iOS 和 tvOS)的 .framework 文件