我能够抓取一个页面的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/
是否有一个函数可以为所有情况执行此操作,还是我需要编写代码?
答案 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);