带有绝对URL的cURL get_data($ url)

时间:2012-01-12 08:06:31

标签: php curl

我正在使用此代码使用cURL获取数据

$url='http://example.com/'; //URL to get content from..
print_r(get_data($url)); //Dumps the content

/* Gets the data from a URL */
function get_data($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}

但是,此代码返回具有相对url的数据。我怎么能得到这个相对的网址和用绝对网址打印?可能与preg_replace ..但如何?

2 个答案:

答案 0 :(得分:5)

查看HTML base标记。如果您想让浏览器执行所有相对于绝对的转换,您会发现它很有用:

$data = get_data($url);
// Note: ideally you should use DOM manipulation to inject the <base>
// tag inside the <head> section
$data = str_replace("<head>", "<head><base href=\"$url\">", $data);
echo $data;

答案 1 :(得分:1)

我认为你必须使用像http://simplehtmldom.sourceforge.net/这样的HTML解析器,并用正确的路径替换所有链接。