2012-05-14 62 views
0

我在PHP中使用卷曲检索一个简单的HTML页面:PHP:相对于绝对URL在curl'ed HTML

<?php 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://example.com/server"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_exec($ch); 
curl_close($ch); 
?> 

include荷兰国际集团它在我的网站文件:

<?php include('curlingCodeAbove.php');?> 

我想用绝对URL替换curl ed HTML中的相对URL。我熟悉Change a relative URL to absolute URL,但我试图将该解决方案插入此代码失败。

回答

1

我自己修复了。设置CURLOPT_RETURNTRANSFER标志。

<?php 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://example.com/server"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
$result = curl_exec($ch); 
curl_close($ch); 
$result = preg_replace("#(<\s*a\s+[^>]*href\s*=\s*[\"'])(?!http)([^\"'>]+)([\"'>]+)#",'$1http://mydomain.com/$2$3', $result); 
echo $result 
?> 

尽管接受自己的答案可能是一种糟糕的形式,嘿,我是那个想出来的人。

0

我做的方式是搜索="/="http://www.example.com/

例如更换:

$replaces['="/'] = '="http://www.example.com/'; 
$output = str_replace(array_keys($replaces), array_values($replaces), $output); 

我没有检查这一点,但它应该做你所需要的。

+0

这个问题并没有将相对URL单独改为绝对URL。这个答案与原始问题相关。我关心的是如何处理卷曲代码,因为我无法找到一种方法来修改'curl_exec'发送给第二个文件的内容,然后才显示它? – mgold