Preg_Replace更改URL

时间:2012-08-24 13:57:45

标签: php regex preg-replace

除了所有链接都不正确之外,我正试图从我网站的另一个网站抓取内容正常工作。

    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]);

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

由于

1 个答案:

答案 0 :(得分: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);