PHP RegEx:用绝对路径替换HTML字符串中的所有相对路径

时间:2014-11-12 09:54:44

标签: php regex web-scraping

我正在开展一个项目,我需要从同一个网站上抓取一些内容,但需要一个子文件夹,然后存储它。我知道它并不理想,但对于客户来说,这是最好的方法。

我需要更改从相对于绝对网址的所有引用
所有参考文献(图像,css,js)都与两者相对:

  • " ../../ IMGS /"
  • " / JS /"

...这意味着他们不能在我的子文件夹中工作。我需要一个与这些引用上的正则表达式匹配的函数,并替换路径。

当我尝试这个时:

function getRelativeContent($url) {
    $page = file_get_contents($url);

    //url needs trailing /
    if (substr($url, -1, 1) != "/")
        $url .= "/";

    $page = preg_replace('/src="(\/)?([\w_\-\/\.\?&=@%#]*)"/i','src="' . $url . '$2"', $page);
    $page = preg_replace('/href="(\/)?([\w_\-\/\.\?&=@%#]*)"/i','href="' . $url . '$2"', $page);

    return $page;
}

echo getRelativeContent($url);

然后这些网址不起作用:

<link href="/cassette.axd/stylesheet/fdbdaa59cb97b35f06f65fd41cb60caa3975cc0f/forbrug-rwd_(max-width 767px)" type="text/css" rel="stylesheet" media="(max-width: 767px)">

<img src="https://www.domain.dk/~/media/2561BD6AFBD64402877E4ACED01F97FD.ashx" />

0 个答案:

没有答案