首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取当前PHP版本发布日期

获取当前PHP版本发布日期
EN

Stack Overflow用户
提问于 2015-01-31 10:06:53
回答 4查看 1K关注 0票数 5

是否可以在php中获得服务器php版本的发布日期

假设我有php 5.3.28

而不是像phpdate()那样返回11 Jul 2013

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-01-31 12:02:53

基于Antony‘’Andrea链接,我稍微修改了phpinfo_array函数,以便您可以像使用phpinfo_array("Build Date");一样使用它

我还创建了phpdate($format)函数来处理它。

代码语言:javascript
复制
function phpinfo_array($info=false){
    /* Andale!  Andale!  Yee-Hah! */
    ob_start(); 
    phpinfo(-1);

    $pi = preg_replace(
        array('#^.*<body>(.*)</body>.*$#ms', '#<h2>PHP License</h2>.*$#ms',
        '#<h1>Configuration</h1>#',  "#\r?\n#", "#</(h1|h2|h3|tr)>#", '# +<#',
        "#[ \t]+#", '#&nbsp;#', '#  +#', '# class=".*?"#', '%&#039;%',
          '#<tr>(?:.*?)" src="(?:.*?)=(.*?)" alt="PHP Logo" /></a>'
          .'<h1>PHP Version (.*?)</h1>(?:\n+?)</td></tr>#',
          '#<h1><a href="(?:.*?)\?=(.*?)">PHP Credits</a></h1>#',
          '#<tr>(?:.*?)" src="(?:.*?)=(.*?)"(?:.*?)Zend Engine (.*?),(?:.*?)</tr>#',
          "# +#", '#<tr>#', '#</tr>#'),
        array('$1', '', '', '', '</$1>' . "\n", '<', ' ', ' ', ' ', '', ' ',
          '<h2>PHP Configuration</h2>'."\n".'<tr><td>PHP Version</td><td>$2</td></tr>'.
          "\n".'<tr><td>PHP Egg</td><td>$1</td></tr>',
          '<tr><td>PHP Credits Egg</td><td>$1</td></tr>',
          '<tr><td>Zend Engine</td><td>$2</td></tr>' . "\n" .
          '<tr><td>Zend Egg</td><td>$1</td></tr>', ' ', '%S%', '%E%'),
        ob_get_clean()
    );

    $sections = explode('<h2>', strip_tags($pi, '<h2><th><td>'));

    unset($sections[0]);

    $pi = array();
    foreach($sections as $section){
        $n = substr($section, 0, strpos($section, '</h2>'));
        preg_match_all(
            '#%S%(?:<td>(.*?)</td>)?(?:<td>(.*?)</td>)?(?:<td>(.*?)</td>)?%E%#',
            $section, 
            $askapache, 
            PREG_SET_ORDER
        );

        foreach($askapache as $m)
            $pi[$m[1]]=(!isset($m[3])||$m[2]==$m[3])?$m[2]:array_slice($m,2);
    }

    if ( $info && isset( $pi[$info] ) ) return $pi[$info];
    return $pi;
}

phpdate函数

代码语言:javascript
复制
function phpdate($format = "d M Y") {
    return date($format, strtotime( phpinfo_array("Build Date") ));
}

因为我刚刚复制了它,我不知道在这个神奇的正则表达式中会发生什么。

代码语言:javascript
复制
phpinfo_array("Build Date"); //returns Apr 10 2014 17:15:04
phpdate("d M Y"); //returns 10 Apr 2014
票数 0
EN

Stack Overflow用户

发布于 2015-01-31 10:53:17

你是说Build Date

代码语言:javascript
复制
function phpdate($format="d M Y")
{
  ob_start(); phpinfo(1);
  if(preg_match('~Build Date (?:=> )?\K.*~', strip_tags(ob_get_clean()), $out))
    return date($format, strtotime($out[0]));
}

echo phpdate();

2013年3月4日

eval.in测试 (链接即将到期)

Update:要在Linux上获得实际的放行日期,可以在变更日志中匹配phpversion()

代码语言:javascript
复制
// match phpversion() in changelog
function phpReleaseDate()
{
  $log = `zgrep '^[0-9].*PHP' /usr/share/doc/php5/changelog.gz`;
  $ver = preg_replace('/^\d+\.\d+\.\d+\K.*/', "", phpversion());
  $find = '/^(\d{2} [A-Z][a-z]{2} \d{4}), PHP ('.preg_quote($ver).')/';

  if(preg_match($find, $log, $out))
    return array('ver' => $out[2], 'date' => $out[1]);
}

print_r(phpReleaseDate());

数组( ver => 5.3.3日期=> 2010年7月22日)

在Debian中尝试过这一点。

票数 2
EN

Stack Overflow用户

发布于 2015-01-31 10:54:22

我将使用phpinfo()并从那里获取构建日期。

在其中一个示例这里中,有一种很好的获取phpinfo数组版本的方法。

一旦你有了那个函数。做:

代码语言:javascript
复制
$php_info = phpinfo_array(true);
$builddate = $php_info['PHP Configuration']['Build Date'];

然后我会为它提出一个功能请求!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28250415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档