首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >处理字符串以获取下载url

处理字符串以获取下载url
EN

Stack Overflow用户
提问于 2015-11-27 05:50:00
回答 3查看 66关注 0票数 0

我想以字符串的形式从https://www.java.com/de/download/manual.jsp获取脱机安装程序x86和x64的下载url。我该怎么做呢?

我可以用file_get_contents();得到这个页面

$page = file_get_contents('https://www.java.com/de/download/manual.jsp');

我需要哪些函数来处理字符串?

我需要这部分源代码:

代码语言:javascript
运行
复制
<a title="Download der Java-Software für Windows Offline" href="http://javadl.sun.com/webapps/download/AutoDL?BundleId=113217">
Windows Offline</a>

代码语言:javascript
运行
复制
<a title="Download der Java-Software für Windows (64-Bit)" href="http://javadl.sun.com/webapps/download/AutoDL?BundleId=113219">
Windows Offline (64-Bit)</a>

问题是,在版本发布后,url可能会发生变化。

EN

回答 3

Stack Overflow用户

发布于 2015-11-27 06:19:31

Preg_match将会做到这一点。

代码语言:javascript
运行
复制
preg_match("'<a title=\"Download der Java-Software für Windows Offline\" href=\"(.*?)\">(.*?)</a>'si", $source, $match);

对于64位版本,情况与此类似。

代码语言:javascript
运行
复制
preg_match("'<a title=\"Download der Java-Software für Windows \(64-Bit\)\" href=\"(.*?)\">(.*?)</a>'si", $source, $match);

在这两种情况下,match1都会给出下载链接。这些模式依赖于"title“属性中的文本,所以如果它不变,下载链接不变,那就不成问题了。

票数 0
EN

Stack Overflow用户

发布于 2015-11-29 00:56:56

代码语言:javascript
运行
复制
$page = file_get_contents('https://www.java.com/de/download/manual.jsp');

preg_match("'<a title=\"Download der Java-Software für Windows Offline\" href=\"(.*?)\">(.*?)</a>'si", $page, $match);
preg_match("'<a title=\"Download der Java-Software für Windows \(64-Bit\)\" href=\"(.*?)\">(.*?)</a>'si", $page, $match1);

$d_x86 = $match[0];
$d_x64 = $match1[0];

preg_match("'http*://\w+.\w+.\w+/\w+/\w+/\w+.\w+=\d+'", $d_x86, $match3);
preg_match("'http*://\w+.\w+.\w+/\w+/\w+/\w+.\w+=\d+'", $d_x64, $match4);

$d_x86_url = $match3[0];
$d_x64_url = $match4[0];

echo "<a href=\"$d_x86_url\">Download aktuellste JRE für Windows x86</a><br>";
echo "<a href=\"$d_x64_url\">Download aktuellste JRE für Windows x64</a>";
票数 0
EN

Stack Overflow用户

发布于 2015-11-29 01:21:18

我建议您使用漂亮的PHP DOM extension来访问文档中所有必需的节点和属性:

代码语言:javascript
运行
复制
<?php

$dom = new DOMDocument();
$dom->loadHTMLFile('https://www.java.com/de/download/manual.jsp');//load and parse document

$links = $dom->getElementsByTagName('a');//get all 'a' tags in document
foreach ($links as $link) {//iterate on all 'a' tags
    if($link->getAttribute('title') == 'Download der Java-Software für Windows Offline')
    {
        echo $link->nodeValue . '<br/>';//or do whatever you want
    }
}

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

https://stackoverflow.com/questions/33947489

复制
相关文章

相似问题

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