2015-06-22 99 views
3

我正在开发一个脚本,如果运行该脚本将从http://php.net/downloads.php中检索当前的稳定版本和旧稳定版本并编译它。如何从php.net获取最新的php版本信息

由于版本号经常变动,php.net本身可能会改变布局等(它们不提供RSS/atom feed),有没有办法从脚本(shell或python)中检索版本号?那工作100%?

+0

这里是你的代码? – FeedTheWeb

+0

既然你列出了bash,为什么不使用aptitude或其他软件包管理器来做呢? – melwil

+0

您是否检查了php.net [relesae feed](http://php.net/releases/feed.php)和[news.php.net](http://news.php.net/)? –

回答

2

您可以阅读PHP Git repo以获取最新的标签(发布)。

我不知道该怎么做Python的,但你可以从回购这种方式从壳中提取标签:

$ git describe --abbrev=0 --tags `git rev-list --tags --max-count=5` 

您可以更改--max-count=5满足您的需求。

此外,您可以使用一些Python DOM库轻松解析this page

编辑

我刚刚发现here一个有趣的命令:

git ls-remote --tags https://github.com/php/php-src.git 

这样,你得到所有从PHP源回购的代码,而无需将其克隆。你需要一些解析,但这是一个简单的方法。

1

基于你的问题中的“bash”标签,我用bash编写我的解决方案。

比张贴在评论网址,而不必:

...我喜欢PHP changelog更多:即使它是HTML和XML不是,它遵循更加严格的结构。注意新闻交换如何“重新传播!”和“现在可用”,再加上一个狂野的“re:”消息出现。

所以我想出了这个脚本:

wget 'https://php.net/ChangeLog-5.php' -qO -|grep h3|sed 's/<[^<>]*>//g' 

它输出以下列表:

Version 5.6.10 
Version 5.5.26 
Version 5.4.42 
Version 5.6.9 
Version 5.5.25 
Version 5.4.41 
Version 5.6.8 
Version 5.5.24 
Version 5.4.40 
Version 5.6.7 
Version 5.5.23 
Version 5.4.39 
Version 5.6.6 
Version 5.5.22 
Version 5.4.38 
Version 5.6.5 
Version 5.5.21 
Version 5.4.37 
Version 5.6.4 
Version 5.5.20 
Version 5.4.36 
Version 5.6.3 
Version 5.5.19 
Version 5.4.35 
Version 5.6.2 
Version 5.5.18 
Version 5.4.34 
Version 5.6.1 
Version 5.5.17 
Version 5.4.33 
Version 5.6.0 
Version 5.5.16 
Version 5.4.32 
Version 5.3.29 
Version 5.5.15 
Version 5.4.31 
Version 5.5.14 
Version 5.4.30 
Version 5.5.13 
Version 5.4.29 
Version 5.5.12 
Version 5.4.28 
Version 5.5.11 
Version 5.4.27 
Version 5.5.10 
Version 5.4.26 
Version 5.5.9 
Version 5.4.25 
Version 5.5.8 
Version 5.4.24 
Version 5.5.7 
Version 5.5.6 
Version 5.4.23 
Version 5.4.22 
Version 5.5.5 
Version 5.4.21 
Version 5.5.4 
Version 5.4.20 
Version 5.5.3 
Version 5.4.19 
Version 5.5.2 
Version 5.4.18 
Version 5.5.1 
Version 5.3.28 
Version 5.3.27 
Version 5.5.0 
Version 5.4.17 
Version 5.4.16 
Version 5.3.26 
Version 5.4.15 
Version 5.3.25 
Version 5.4.14 
Version 5.3.24 
Version 5.4.13 
Version 5.3.23 
Version 5.4.12 
Version 5.3.22 
Version 5.4.11 
Version 5.3.21 
Version 5.4.10 
Version 5.3.20 
Version 5.4.9 
Version 5.3.19 
Version 5.4.8 
Version 5.3.18 
Version 5.4.7 
Version 5.3.17 
Version 5.4.6 
Version 5.3.16 
Version 5.4.5 
Version 5.3.15 
Version 5.4.4 
Version 5.3.14 
Version 5.4.3 
Version 5.3.13 
Version 5.4.2 
Version 5.3.12 
Version 5.4.1 
Version 5.3.11 
Version 5.4.0 
Version 5.3.10 
Version 5.3.9 
Version 5.3.8 
Version 5.3.7 
Version 5.3.6 
Version 5.3.5 
Version 5.2.17 
Version 5.2.16 
Version 5.3.4 
Version 5.2.15 
Version 5.3.3 
Version 5.2.14 
Version 5.3.2 
Version 5.2.13 
Version 5.3.1 
Version 5.3.0 
Version 5.2.12 
Version 5.2.11 
Version 5.2.10 
Version 5.2.9 
Version 5.2.8 
Version 5.2.7 
Version 5.2.6 
Version 5.2.5 
Version 5.2.4 
Version 5.2.3 
Version 5.2.2 
Version 5.2.1 
Version 5.2.0 
Version 5.1.6 
Version 5.1.5 
Version 5.1.4 
Version 5.1.3 
Version 5.1.2 
Version 5.1.1 
Version 5.1.0 
Version 5.0.5 
Version 5.0.4 
Version 5.0.3 
Version 5.0.2 
Version 5.0.1 
Version 5.0.0 
Version 5.0.0 Release Candidate 3 
Version 5.0.0 Release Candidate 2 
Version 5.0.0 Release Candidate 1 
Version 5.0.0 Beta 4 
Version 5.0.0 Beta 3 
Version 5.0.0 Beta 2 
Version 5.0.0 Beta 1 

如果你想要得到的日期,这样,我建议使用BeautifulSoup + Python的这个,而不是庆典。日期似乎被放置在<b></b><time></time>标签中,尽管我无法说出原因。

如果你有权访问git,我建议使用jackflash的答案中提到的git ls-remote