我一直在用这个......
echo PHP_VERSION;
...显示在服务器上运行的PHP版本,通常显示类似......
的内容5.4.6.1
但我刚刚发现,在某些服务器上,我获得的版本号超过了版本号,而是显示出来了:
5.4.6.1ububtu1.8
有没有办法可以得到这些数字?
原因是我需要检查PHP的版本并显示消息,例如......
$phpversion = PHP_VERSION;
if($phpversion >= "5.5") {
echo "All good";
} else {
echo "Your version of PHP is too old";
}
...但是当然如果$ phpversion包含除数字以外的任何内容,那么这个脚本将无法正常工作。
提前致谢。
答案 0 :(得分:7)
获取完整版(5.4.6.1)
<?php
preg_match("#^\d+(\.\d+)*#", PHP_VERSION, $match);
echo $match[0];
它将在您的示例中返回5.4.6.1
根据需要获取版本(5.4)
preg_match("#^\d.\d#", "5.4.6.1ububtu1.8", $match);
echo $match[0];
它会在你的例子中返回5.4
答案 1 :(得分:4)
PHP提供了一个方便的函数version_compare
,用于比较SemVer - 类似版本号。虽然你可以做一大堆手动字符串争吵,但我怀疑在你的用例中你可以利用盒子里的东西让你的生活更轻松。
答案 2 :(得分:4)
if (version_compare(phpversion(), '5.5.0', '>=')) {
echo "All good";
} else {
echo "Your version of PHP is too old";
}
测试脚本:
<?php
echo PHP_VERSION;
echo PHP_EOL;
echo phpversion();
echo PHP_EOL;
echo version_compare(phpversion(), '5.5.0', '>=') ?: "false";
echo PHP_EOL;
echo version_compare(phpversion(), '5.6.0', '>=') ?: "false";
echo PHP_EOL;
echo version_compare(phpversion(), '5.7.0', '>=') ?: "false";
echo PHP_EOL;
echo version_compare('5.4.6.1ububtu1.8', '5.4.0', '>=') ?: "false";
echo PHP_EOL;
echo version_compare('5.4.6.1ububtu1.8', '5.5.0', '>=') ?: "false";
?>
输出:
$ php test.php
5.6.4-1+deb.sury.org~trusty+1
5.6.4-1+deb.sury.org~trusty+1
1
1
false
1
false
答案 3 :(得分:0)
前几天我遇到了同样的问题,我从PHP文档中找到了这个片段
// PHP_VERSION_ID is available as of PHP 5.2.7, if our
// version is lower than that, then emulate it
if (!defined('PHP_VERSION_ID')) {
$version = explode('.', PHP_VERSION);
define('PHP_VERSION_ID', ($version[0] * 10000 + $version[1] * 100 + $version[2]));
}
现在,PHP_VERSION_ID
常量包含您想要的内容。
链接here
答案 4 :(得分:0)
你可以这样做
echo filter_var(PHP_VERSION, FILTER_SANITIZE_NUMBER_FLOAT,
FILTER_FLAG_ALLOW_FRACTION);
第二个参数将根据FLOAT
表示清理结果,第三个参数允许分数如“DOT&#39;
答案 5 :(得分:0)
如果您确定自己始终处于或高于5.2.7。
http://php.net/manual/en/reserved.constants.php#reserved.constants.core
$phpversionmajor = PHP_VERSION_MAJOR;
$phpversionmajor = PHP_VERSION_MINOR;
if($phpversionmajor >= 5 && $phpversionminor >= 5) {
echo "All good";
} else {
echo "Your version of PHP is too old";
}
答案 6 :(得分:0)
您可以使用PHP的可变修改功能来检查特定版本:
<?php
$v=PHP_VERSION;
echo "RAW: ".$v.PHP_EOL;
$n=$v+0;
echo "MANGLED: ".$n.PHP_EOL;
echo "CONSTANT DIRECTLY MANGLED: ".(PHP_VERSION+0).PHP_EOL;
$u="5.4.6.1ububtu1.8";
echo "From string: ".$u.PHP_EOL;
$nu=$u+0;
echo "From mangled string: ".$nu.PHP_EOL;
输出:
$: ~/test> php -f v.php
RAW: 5.5.24
MANGLED: 5.5
CONSTANT DIRECTLY MANGLED: 5.5
From string: 5.4.6.1ububtu1.8
From mangled string: 5.4
$: ~/test>