PHP:将html中的url转换为完全成熟的url?

时间:2012-02-11 11:09:48

标签: php

我能够抓取一个页面的URL,但我想知道将这些链接可以包含的各种格式转换为完全成熟的URL的最简单方法是什么。例如:

如果我刮了:www.mysite.com/some/place/in/space.html

我得到以下网址:

../img.jpg
img.jpg
../../bla.jpg
inc/bla.jpg
/
./

他们应该解决

www.mysite.com/some/place/img.jpg
www.mysite.com/some/place/in/img.jpg
www.mysite.com/some/bla.jpg
www.mysite.com/some/place/in/inc/bla.jpg
www.mysite.com/some/place/in/
www.mysite.com/some/place/in/

是否有一个函数可以为所有情况执行此操作,还是我需要编写代码?

3 个答案:

答案 0 :(得分:1)

我将此功能用于我很久以前写过的爬虫:http://codepad.org/1VxMECNj

使用前置主机调用该函数:

relativeUrl('http://host/dir/dir2/../../file.html');
//> returns http://host/file.html

答案 1 :(得分:0)

你可以在网址前添加www.mysite.com/some/place/in/ .. www.mysite.com/some/place/in/../img.jpg我认为应该解决。

答案 2 :(得分:0)

您可以使用REGEX将相对链接替换为绝对URL:

$data = preg_replace('#(href|src)="([^:"]*)("|(?:(?:%20|\s|\+)[^"]*"))#', '$1="' . $site_url . '$2$3', $data);