You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PHP获取Twitter短链接指向的真实目标链接

解决Twitter短链接转真实链接的PHP实现方案

问题原因

view-source:是Chrome浏览器专属的协议前缀,PHP的文件读取函数(如file_get_contents)无法识别该协议,因此会抛出文件不存在的错误。直接调用file_get_contents时,PHP默认会自动跟随HTTP重定向,最终获取到的是目标页面(如YouTube)的内容,而非短链接跳转页的源码。

方案一:通过HTTP响应头获取跳转目标(推荐)

Twitter短链接通常通过HTTP 3xx重定向跳转到真实地址,直接读取响应头中的Location字段即可,无需加载页面内容,效率更高。

代码示例

<?php
$shortUrl = $_POST['input1'];
// 处理链接中的空格或格式问题(示例链接中的空格为输入失误,实际应为https://t.co/hyVassZuxt)
$shortUrl = trim(str_replace(' ', '', $shortUrl));

// 获取响应头并追踪重定向
$headers = get_headers($shortUrl, 1);

// 提取真实链接:适配单层/多层重定向的情况
if (isset($headers['Location'])) {
    $realUrl = is_array($headers['Location']) ? end($headers['Location']) : $headers['Location'];
    echo $realUrl;
} else {
    echo "无法获取真实链接";
}
?>

方案二:获取跳转页源码并解析

若需要获取类似Chrome view-source的跳转页源码,可通过CURL禁止自动跟随重定向,拿到跳转页HTML后再解析其中的跳转逻辑(如meta刷新标签、JavaScript跳转)。

代码示例

<?php
$shortUrl = $_POST['input1'];
$shortUrl = trim(str_replace(' ', '', $shortUrl));

$ch = curl_init($shortUrl);
// 禁止自动跟随重定向
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
// 同时获取响应头和内容
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

// 分离响应头与HTML内容
list($header, $html) = explode("\r\n\r\n", $response, 2);

// 输出跳转页源码(对应view-source内容)
echo htmlspecialchars($html);

// 从源码中解析真实链接:示例匹配meta refresh标签
preg_match('/<meta[^>]+http-equiv="refresh"[^>]+content="\d+;url=(.*?)"/i', $html, $matches);
if (!empty($matches[1])) {
    $realUrl = htmlspecialchars_decode($matches[1]);
    echo "<br>解析到的真实链接:" . $realUrl;
}
?>

适配不同子域名的说明

无论目标链接是www.youtube.com还是m.youtube.com,上述两种方法都会直接获取到短链最终跳转的真实地址,无需额外适配——Twitter短链的重定向目标本身就是对应子域名的真实链接,直接提取即可。

内容的提问来源于stack exchange,提问作者loveearthmix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 08:50:05