点击通过curl接收时,我需要任何带有“a href =”标签的链接。我不能硬编码这些链接,因为它们来自动态网站,所以可能是任何东西。我怎么做到这一点?
由于
编辑:让我解释一下。我的电脑上有一个使用网络前端的应用程序。它会对文件进行编目,并提供重命名删除等的选项。我想添加一个公共视图,但是如果我把它放在网上,那么任何人都可以删除重命名文件。如果我卷曲页面,我可以通过使用不同的CSS删除菜单栏和编辑选项。那部分都有效。唯一不起作用的部分是,如果我点击页面上的一个链接,它会将我引导回原始链接地址,并且当菜单栏返回时,它会失败。我需要它来卷曲点击的链接。希望更有意义..
这是我的代码,它获取原始链接并卷曲,并将css更改为指向我自己的CSS。它将java脚本指向原始脚本,因为我不需要更改它。我现在需要在点击时通过curl调用页面上的“a href”链接,而不是转到原始目的地
<?php
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://192.168.0.14:8081/home/');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$curl_response = curl_exec($ch);
curl_close($ch);
//Change link url
$link = $curl_response;
$linkgo = '/sickbeard_public';
$linkfind = 'href="';
$linkreplace = 'href="' . $linkgo ;
$link = str_replace($linkfind, $linkreplace, $link);
//Change js url
$js = $link;
$jsgo = 'http://192.168.0.14:8081';
$jsfind = 'src="';
$jsreplace = 'src="' . $jsgo ;
$js = str_replace($jsfind, $jsreplace, $js);
//Fix on page link errors
$alink = $js;
$alinkgo = 'http://192.168.0.14:8081/';
$alinkfind = 'a href="/sickbeard_public/';
$alinkreplace = 'a href="' . $alinkgo ;
$alink = str_replace($alinkfind, $alinkreplace, $alink);
//Echo page back
echo $alink;
?>
答案 0 :(得分:0)
您可以使用正则表达式获取所有网址
// insert general warning about how parsing HTML using regex is evil :-)
preg_match('/href="([^"]+)"/', $html, $matches);
$urls = array_slice($matches, 1);
// Now just loop through the array and fetch the URLs with cUrl...
答案 1 :(得分:0)
虽然我无法想象为什么你会这样做但我认为你应该使用ajax。 在每个标签上附加一个事件,并将它们发送到服务器上的脚本,在那里会发生卷曲的魔力。 无论如何,你应该解释为什么你需要用curl获取数据。
答案 2 :(得分:0)
据我所知,您需要通过CURL获取URL的内容...所以这是解决方案
<a href="<?php print $my_url; ?>" id="my_link">Click here to get via curl </a>
然后使用上述<a>
标记附加一个事件,例如在JQuery中
$("#my_link").click(function(){
var target_url = $(this).attr("href");
//Send an ajax call to some of your page like cURL_wrapper.php with target_url as parameter in get
});
然后在cURL_wrapper.php
做下面的
<?php
//Get the $target_url here from $_GET[];
$ch = curl_init($your_domain");
$fp = fopen("$target_url", "r");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
?>