regex 如何从www.example.com获取最新的php版本信息php.net

pcrecxhr  于 2023-01-10  发布在  PHP
关注(0)|答案(5)|浏览(199)

我正在开发一个脚本,如果运行该脚本,将从http://php.net/downloads.php中检索当前稳定版本和旧稳定版本并进行编译。
由于版本号经常更改,并且php.net本身可能会更改布局等(它们不提供RSS/ atom提要),有没有办法从100%有效的脚本(shell或python)中检索版本号?

o3imoua4

o3imoua42#

您可以阅读PHP Git repo以获取最新的标签(版本)。
我不知道如何在Python上实现,但你可以从shell中提取repo中的标记:

$ 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源代码库中获取所有的标签,而不用克隆它。你需要一些解析,但这是一个简单的方法。

gcmastyq

gcmastyq3#

根据您问题中的“bash”标记,我用bash编写了我的解决方案。
而不是在评论中发布的URL:

...我更喜欢PHP changelog:尽管它是HTML而不是XML,但它遵循更严格的结构。2注意新闻交换“已重新发布!”3和“现在可用”4以及一个“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而不是bash,日期似乎被放在<b></b><time></time>标记中,尽管我无法说出原因。
如果你可以访问git,我建议你使用jackflash回答中提到的git ls-remote

nfs0ujit

nfs0ujit4#

如果您想获取当前发布版本,可以使用php.net序列化发布版本url格式,说明位于https://www.php.net/releases页右侧
可以使用任何客户端批处理获取格式化数据并在脚本中使用它。
json中的所有版本示例:https://www.php.net/releases/?json
示例最新php 7.1 json版本:https://www.php.net/releases/?json&version=7.1

nlejzf6q

nlejzf6q5#

有一个免费的服务提供RSS和JSON数据的当前版本的一些服务器应用程序,如PHP,Nginx,Apache,Ruby等:
https://current-version.com/

相关问题