简单的DOM HTML返回错误的URL

时间:2014-08-14 18:50:56

标签: php html

我有以下代码:

<?php

include("simple_html_dom.php");

crawl('http://www.google.com/search?hl=en&output=search&q=inurl:https://website.com/folder/');

function crawl($url){
    $html = file_get_html($url);
    $links = $html->find('a');
    foreach($links as $link)
    {
        $new_link = str_replace("url?q=", "/" ,$link->href);
        $new_link = $newstr = substr( $new_link, 0, strpos( $new_link, '&' ) );

        echo "<a href='".$new_link."'>".$link->plaintext."</a><br />";
    }
}

?>

它会返回这样的网址:http//website.com/folder/stuff

没有使{URL无法访问的:

2 个答案:

答案 0 :(得分:0)

我认为您的代码在使用DOMDocument

的方法中没有任何问题
$xml = new DOMDocument();
@$xml->loadHTMLFile("http://www.google.com/search?hl=en&output=search&q=inurl:https://github");
$links = array();
foreach($xml->getElementsByTagName('a') as $link) {
    //skip if url don't contain url?q
    if (false === strpos($link->getAttribute('href'), '/url?q')) continue;

     $href = str_replace("url?q=", "/" ,$link->getAttribute('href'));
     $href = substr( $href, 0, strpos( $href, '&' ) );
     $links[] = array('url' => str_replace("//","", $href), 'text' => $link->nodeValue);
}

print_r($links);

请参阅Demo at Viper

答案 1 :(得分:-1)

如果你一起拿出“http://”怎么办?它不会把你放在正确的网站上吗?我不知道php,但我会根据我对HTML的了解以及浏览器的工作方式进行猜测。