我必须获取nodeValue
是&#39;下载&#39;的所有链接,但是当我尝试首先获取所有链接,然后选择我需要的链接时,只有我的链接挑选了<header>
标记。 &#39;下载&#39;链接位于页面的下方。
我做错了什么?
这是功能:
<?php
function rkm_download_links_fix($current_url) {
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTMLFile($current_url);
libxml_use_internal_errors(false);
$urls = $dom->getElementsByTagName('a');
print_r($urls); // here i get only links in <header>
$url_copy = array();
foreach ($urls as $url) {
print_r($url->nodeValue);
if($url->nodeValue == 'download') {
$attributes = $url->attributes;
$url_copy[] = array('url' => $url->getAttribute('href'));
}
}
} ?>
如果您需要更多信息,请不要犹豫。
提前致谢!
答案 0 :(得分:0)
为什么需要DOM?
简单的php:
<?php
function getLinks($url)
{
$document = file_get_contents($url);
$links = explode('<a', $document);
$resultLinks = array();
if(count($links) <= 1)
return 'no links';
for($i = 0; $i < count($links); ++$i)
{
if(mb_strpos($links[$i], '>download</a>', 0, 'UTF-8') === false &&
mb_strpos($links[$i], '>Download</a>', 0, 'UTF-8') === false)
continue;
$hrefStart = mb_strpos($links[$i], 'href', 0, 'UTF-8');
if($hrefStart === false)
continue;
$hrefStart += 4;
$hrefStart = mb_strpos($links[$i], '"', $hrefStart, 'UTF-8');
if($hrefStart === false)
$hrefStart = mb_strpos($links[$i], '\'', $hrefStart, 'UTF-8');
if($hrefStart === false)
continue;
++$hrefStart;
$hrefEnd = mb_strpos($links[$i], '"', $hrefStart, 'UTF-8');
if($hrefEnd === false)
$hrefEnd = mb_strpos($links[$i], '\'', $hrefStart, 'UTF-8');
if($hrefEnd === false)
continue;
$resultLinks[] = mb_substr($links[$i], $hrefStart, ($hrefEnd - $hrefStart), 'UTF-8');
}
return $resultLinks;
}
$links = getLinks('http://parse/ws/try2.html');
echo '<pre>';
print_r($links);
echo '</pre>';