Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中从rstyle链接获取完整URL_Php_Redirect_Hyperlink - Fatal编程技术网

如何在php中从rstyle链接获取完整URL

如何在php中从rstyle链接获取完整URL,php,redirect,hyperlink,Php,Redirect,Hyperlink,我有一个链接: 哪个重定向到 如何获取重定向链接 我尝试了以下方法: $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Must be set to true so that PHP follows any "Location:" header curl_

我有一个链接:

哪个重定向到

如何获取重定向链接

我尝试了以下方法:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Must be set to true so that PHP follows any "Location:" header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch); // $a will contain all headers
$url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); // This is what you need, it will return you the last effective URL
echo $url;
但它没有起作用。我还尝试:

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE); // We'll parse redirect url from header.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE); // We want to just get redirect url but not to follow it.
$response = curl_exec($ch);
preg_match_all('/^Location:(.*)$/mi', $response, $matches);
curl_close($ch);
echo !empty($matches[1]) ? trim($matches[1][0]) : 'No redirect found';

我没有任何关于这方面的知识,但我在我的网站上使用类似的东西发送短信。所以,如果是锻炼,你可以试试

$URL="example.com";  
$ch = curl_init($URL);  
curl_setopt($ch, CURLOPT_HEADER, 0);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
$output = curl_exec($ch);      
curl_close($ch); 

您得到的重定向不是来自服务器,而是来自javascript。cURL不执行javascript。当我打开你的链接时,我看到真正的链接隐藏在“title”标签中

$url='1!'http://rstyle.me/n/bfj42hqgww';
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,$URL);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_头,false);
curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);
$data=curl\u exec($curl);
curl_close($curl);
//获取真实的URL。
preg_match(“|(.+?)| si“,$data,$matches);
$link=(isset($matches[1])$匹配[1]:“”;
echo$link;

我没有测试它,但这似乎得到了它在title标签中返回的链接的最后一个url,但这不是我访问短链接时的实际链接,不是从title标签获取,而是可以实际执行javascript并获取目标页面的url,因为对于同一域的另一个链接,title标签没有该链接
$url = 'http://rstyle.me/n/bfj42hqgww';

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

$data = curl_exec($curl);
curl_close($curl);

// Get real URL.
preg_match("|<title>(.+?)</title>|si", $data, $matches);

$link = ( isset($matches[1]) ) ? $matches[1] : '';

echo $link;