用于更改页面上所有链接以卷曲请求的脚本

时间:2011-05-17 16:35:05

标签: php curl

我卷了一页。所以我现在在我的域名上显示该页面。该页面上的链接都指向原始页面。我需要一个脚本来接受所有的并用函数

替换这些链接
$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;

因此,当点击链接时,它不会将您引导至原始页面,而是运行curl函数并将您带到该页面。

P.S感谢编辑即将完成,但你先到了那里。

2 个答案:

答案 0 :(得分:2)

所以你正在尝试编写代理?这已经完成了,open source

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

答案 1 :(得分:1)

根据您的评论判断,您可能正在寻找的缺失部分可能是PHP DOM extension,也可能是可比较的。基本上,您想要解析您正在进行的页面的HTML,以便您可以对其进行更改。

您可以通过告诉cURL将页面源作为字符串返回给您(正如您所做的那样),然后将其提供给DOMDocument::loadHTML。然后,您可以使用DOMDocument::getElementsByTagName抓取所有链接(根据您的判断,提供'a',可能'img'和其他一些链接。

一旦你拥有了DOMNodeList,你就可以通过href检索属性来改变他们的...->attributes->getNamedItem('href') - 属性(对于图像来说,src当然,如果你想走那么远),使用属性...->nodeValue调整内容,例如:

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

最后,您可以使用DOMDocument::saveHTML来更改代码,然后可以echo