首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用preg_match php从web内容中提取版本号

如何使用preg_match php从web内容中提取版本号
EN

Stack Overflow用户
提问于 2019-12-29 10:25:25
回答 2查看 85关注 0票数 1

我想从url内容中提取版本号。我试着用curl_exec提取信息。但无法让preg_match得到准确的信息。

我试过的代码是

代码语言:javascript
复制
function getVersionFromurl(string $url)
{
    $curl = curl_init($url);
    $content = curl_exec($curl);
    curl_close($curl);
    $rx = preg_match("(\"version\" (\d+\.\d+\.\d+\.\d+))", $content, $matches);
    echo $matches[1];
}

$url = 'https://www.foxitsoftware.com/downloads/downloadForm.php?retJson=1&product=Foxit-Reader&platform=Mac-OS-X';
$val = getVersionFromurl($url);

这里的内容是

{“package_info”:{“语言”:“英语”、“法语”、“德语”、“意大利语”、“西班牙语”、“类型”:“pkg”、“版本”:“3.4.0.1012”、"2.1.0804“、"2.0.0625”、"1.1.1.0301“、"1.1.0.0128”、“大小”:“139.13MB”、“版本”:“10/15/19”,"os":"","down":"/pub/foxit/reader/desktop/mac/3.x/3.4/ML/FoxitReader340.setup.pkg",“镜像”:“”,“手册”:“”,“big_version”:“3.x”}1“

如何从内容中提取3.4.0.1012。我尝试的preg_matcxh给了我错误。如何编写preg_match正则表达式。

请任何帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-29 10:29:17

最好将字符串转换为JSON对象,并从中获取版本值。

代码语言:javascript
复制
function getVersionFromurl(string $url)
{
    $curl = curl_init($url);
    $content = curl_exec($curl);
    curl_close($curl);

    $contentObj = json_decode($content);
    echo $contentObj.package_info.version[0];
}

$url = 'https://www.foxitsoftware.com/downloads/downloadForm.php?retJson=1&product=Foxit-Reader&platform=Mac-OS-X';
$val = getVersionFromurl($url);

注意从字符串到对象的转换,并获取版本数组的第一个元素。

代码语言:javascript
复制
$contentObj = json_decode($content);
echo $contentObj.package_info.version[0];
票数 3
EN

Stack Overflow用户

发布于 2019-12-29 10:58:32

在您的模式中,您没有考虑这个部分-- :\[",在"version"之后--您还使用了两个捕获组,因此$matches[1]将包含整个匹配,而$matches[2]将包含您的值。

但是,您可以使用一个捕获组。

代码语言:javascript
复制
"version":\["(\d+(?:\.\d+){3})"

Regex演示 x- Php演示

代码语言:javascript
复制
preg_match('~"version":\["(\d+(?:\.\d+){3})"~', $content, $matches);
echo $matches[1];

输出

代码语言:javascript
复制
3.4.0.1012

注意到,您不必转义双引号,您必须为模式使用定界符

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

https://stackoverflow.com/questions/59518550

复制
相关文章

相似问题

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