0

我正在尝试从另一个运行良好的网站中获取内容,除了所有链接都不正确。

    include_once('../simple_html_dom.php');


    $page = file_get_html('http://www.website.com');


$ret = $page->find('div[id=header]');


echo $ret[0];

无论如何,不​​是所有链接都显示链接以获得完整链接吗?使用 preg 替换。

   $ret[0] = preg_replace('@(http://([\w-.]+)+(:\d+)?(/([\w/_.]*(\?\S+)?)?)?)@', 
       '<a href="$1">http://fullwebsitellink.com$1</a>', $ret[0]);

我想它会像上面那样,但我不明白?

谢谢

4

1 回答 1

3

你的问题并没有真正解释什么是“不正确”的链接,但我猜你有这样的事情:

<div id="header"><a href="/">Home</a> | <a href="/sitemap">Sitemap</a></div>

并且您想将其嵌入到另一个站点中,这些链接需要使用域名完全限定,如下所示:

<div id="header"><a href="http://example.com/">Home</a> | <a href="http://example.com/sitemap">Sitemap</a></div>

假设是这种情况,您想要的替换非常简单,您甚至不需要正则表达式:找到所有以“/”开头的 href 属性,并添加域部分(我将使用“http://example.com” ) 到他们的开始,使他们成为绝对:

$scraped_html = str_replace('href="/', 'href="http://example.com/', $scraped_html);
于 2012-08-24T14:49:28.193 回答