如何解决使用通配符解析包版本以在 PHP 中进行比较
我正在尝试使用 <?PHP
session_start();
if (!is_array($_SESSION)) {
$_SESSION['persistentValues'] = array();
}
if (isset($_POST['button'])) {
$_SESSION['persistentValues'][] = $_POST['button'];
}
foreach ($_SESSION as $value) {
echo $value;
}
if (isset($_POST["result"])) {
$p = eval($value.";");
echo $p;
}
?>
比较 <?PHP
include ('./array.PHP');
?>
<div style="padding-left:40px">
<h2> PHP Calculator</h2>
<form method="post" action="">
Enter value: <input type="text" name="value"> <br> <br>
<div style="padding-left: 105px">
<input type="submit" value="9" name="button">
<input type="submit" value="8" name="button">
<input type="submit" value="7" name="button">
<input type="submit" value="+" name="button">
<br>
<input type="submit" value="6" name="button">
<input type="submit" value="5" name="button">
<input type="submit" value="4" name="button">
<input type="submit" value="-" name="button" style="padding-left: 9px">
<br>
<input type="submit" value="3" name="button">
<input type="submit" value="2" name="button">
<input type="submit" value="1" name="button">
<input type="submit" value="/" name="button" style="padding-left: 9px">
<br>
<input type="submit" value="0" name="button" style="padding-left:33px">
<input type="submit" value="." name="button" style="padding-right:9px">
<input type="submit" value="x" name="button" style="padding-left: 7px">
<br>
</div>
<br>
<input type="submit" value="Calculate" name="result">
</form>
</div>
等软件包版本,但没有得到预期的结果。
我正在像这样分解版本
^6.1||^6.2||^6.3
这适用于 \Composer\Semver\VersionParser
为 6.3 的情况,但我认为 $currentVersion = '6.3';
$requiredPackage = '^6.1||^6.2||^6.3';
$compatibLeversions = explode('||',$requiredPackage);
$lowestSupported = ltrim(current($compatibLeversions),'^');
$highestSupported = ltrim(end($compatibLeversions),'^');
$parser = new VersionParser();
$lowestSupported = $parser->normalize($lowestSupported);
$highestSupported = $parser->normalize($highestSupported);
$isLower = version_compare($currentVersion,$lowestSupported,'<');
$isHigher = version_compare($currentVersion,$highestSupported,'>');
if ($isLower || $isHigher) {
return false;
}
会失败,因为虽然 $currentVersion
匹配包,但由于 6.3.4.0
规范了版本^6.3
改为 VersionParser
,并且它无法正确解析 6.3
以允许 6.3.0.0
。
有什么想法吗?
解决方法
我能够使用 Nico Haase 的建议完成它,如下所示:
$isLower = Comparator::lessThan($currentVersion,$lowestSupported);
$isHigher = Comparator::greaterThan($highestSupported,$currentVersion);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。