2011-05-17 27 views
0

我卷曲页面。所以现在我的网页显示在我的网域上。该页面上的链接都指向原始页面。我需要一个脚本,它所有的和替换功能更改页面上所有链接以卷曲请求的脚本

$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, 'URL FROM THE A HREF OF THAT PARTICULAR LINK'); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
$curl_response = curl_exec($ch); 
curl_close($ch); 
echo $curl_response; 

所以这些链接时,链接被点击它不会带你到原来的页面,但运行的卷曲功能,带你到该页面。

P.S感谢您的编辑即将完成,但您首先到达那里。

+1

为什么不直接在$ curl_response上做一个字符串替换,然后再回应它 – 2011-05-17 16:39:14

+2

那么所有的好答案[你已经得到](http://stackoverflow.com/questions/6032676/fix-links-on -curl页)? – Schwartzie 2011-05-17 16:40:25

+0

你可以用一个函数替换一个url,并在该函数中使用原始网址 – Michael 2011-05-17 16:43:15

回答

2

所以你想写一个代理?这已经完成了,并且open source

您将希望在$ curl_response上进行替换。如果页面使用相对路径,则可以将<base href="http://yourdomain.com" />附加到<head>。另外,你可以用str_replace('http://theirdomain.com/', '')去除任何绝对路径。

1

根据您的意见判断,您可能正在寻找的缺失部分可能是PHP的DOM extension或可比较的。基本上,你想解析你正在卷曲的页面的HTML,所以你可以改变它。

您可以通过告诉cURL以字符串形式返回页面源代码(如您所做的那样),然后将其提供给DOMDocument::loadHTML。然后,您可以使用DOMDocument::getElementsByTagName(根据您的判断提供'a',可能是'img'和其他几个)来获取所有链接。

一旦你的DOMNodeList,然后你可以用...->attributes->getNamedItem('href')检索属性(这将是src图片,当然,如果你想要去那么远),采用调整内容的属性的改变他们的href -attributes ...->nodeValue,如:

$attributeNode->nodeValue = myURLtransform($attribute->nodeValue); 

最后,你会用DOMDocument::saveHTML有改变的代码,然后你可以echo

+0

当我调整内容时,我可以将链接更改为卷曲调用? – Michael 2011-05-17 17:18:00

+0

这取决于。如果您获取原始页面的页面是“mypage.php?url = url-encoded-url”,例如'mypage.php?url = http%3A%2F%2Fwww.google.com',那么你的'myURLtransform()'看起来像这样:'myURLtransform($ url){return'mypage.php?url ='。进行urlencode($网址); }'。另外,如果你想把这些页面卷曲并放在别的地方,你可以使用'function myURLtransform($ url){/ * cURL调用,然后将检索到的页面保存到一个文件中,例如。 file_put_contents()*/return'url-to-that-file'; }',尽管这对于任意多的链接来说是任意的缓慢。 – pinkgothic 2011-05-17 18:03:00

+0

这个链接地址将类似于此http://192.168.0.14:8081/home/displayShow?show=94991 我的index.php看起来像那么这个http://pastebin.com/RMzPJj01 它有关于它的链接全部看起来类似于http://192.168.0.14:8081/home/displayShow?显示= 94991 我需要它采取这些链接和转换它们,所以当你点击它们时,它会卷起链接。请你能为我编码.. – Michael 2011-05-17 18:28:22