仅获取PHP版本号

use*_*143 4 php server

我一直在用这个......

echo PHP_VERSION;
Run Code Online (Sandbox Code Playgroud)

...显示在服务器上运行的PHP版本,通常显示类似...

5.4.6.1
Run Code Online (Sandbox Code Playgroud)

但我刚刚发现,在某些服务器上,我获得的版本号超过版本号,而是显示:

5.4.6.1ububtu1.8
Run Code Online (Sandbox Code Playgroud)

有没有办法可以得到数字?

原因是我需要检查PHP的版本并显示一条消息,比如......

$phpversion = PHP_VERSION;
if($phpversion >= "5.5") {
    echo "All good";
} else {
    echo "Your version of PHP is too old";
}
Run Code Online (Sandbox Code Playgroud)

...但是当然如果$ phpversion包含除数字之外的任何内容,那么此脚本将无法正常工作.

提前致谢.

Moh*_*med 8

获取完整版(5.4.6.1)

  <?php
    preg_match("#^\d+(\.\d+)*#", PHP_VERSION, $match);
    echo $match[0];
Run Code Online (Sandbox Code Playgroud)

它将在您的示例中返回5.4.6.1

根据需要获取版本(5.4)

preg_match("#^\d.\d#", "5.4.6.1ububtu1.8", $match);
echo $match[0];        
Run Code Online (Sandbox Code Playgroud)

它将在您的示例中返回5.4

在这里测试


Sam*_*nch 5

取自文档中的示例(此处此处):

if (version_compare(phpversion(), '5.5.0', '>=')) {
    echo "All good";
} else {
    echo "Your version of PHP is too old";
}
Run Code Online (Sandbox Code Playgroud)

测试脚本:

 <?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";
 ?>
Run Code Online (Sandbox Code Playgroud)

输出:

$ 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
Run Code Online (Sandbox Code Playgroud)