讲师中心 微信公众号
AI工具推荐 视频效率加速

短链接还原php后怎么保存_导出为txt或csv文件方法【介绍】

冬芳姑娘_8785

冬芳姑娘_8785

发布时间:2025-12-31 01:43:14

|

488人浏览过

|

来源于php中文网

原创

PHP获取短链真实URL后,用file_put_contents()写入带时间戳的txt文件,或用fputcsv()生成含BOM的CSV;直接下载则需header()设置类型与附件名,再通过php://output输出,关键要正确配置cURL跳转参数。

短链接还原php后怎么保存_导出为txt或csv文件方法【介绍】

用 PHP 获取短链接真实 URL 后,怎么直接保存为 .txt 文件

PHP 本身不自动“下载”或“导出”,所谓“保存为 txt”,本质是:获取到真实 URL 后,用 file_put_contents() 写入本地文件,或用 header() 强制浏览器下载。最稳妥的做法是先写入服务器磁盘,再提供下载链接。

  • 确保目标目录有写权限(如 ./outputs/),否则 file_put_contents() 会静默失败
  • 写入前建议对 URL 做基础过滤,比如用 filter_var($url, FILTER_SANITIZE_URL) 清理非法字符
  • 追加写入(FILE_APPEND)比覆盖更安全,避免单次失败丢失历史记录
  • 文件名建议带时间戳,防止重复覆盖:'urls_' . date('Ymd_His') . '.txt'
file_put_contents(
    './outputs/urls_' . date('Ymd_His') . '.txt',
    $real_url . PHP_EOL,
    FILE_APPEND | LOCK_EX
);

把多个短链还原结果导出为 .csv(含表头)

CSV 不是简单拼字符串,尤其当 URL 含逗号、换行、双引号时,必须按 RFC 4180 规范转义。PHP 的 fputcsv() 自动处理这些,比手拼 fwrite() 可靠得多。

  • 务必用 fopen(..., 'w') 打开文件,不是 'a' —— CSV 是结构化格式,追加需重读重写整表
  • 第一行写表头(如 ['short_url', 'real_url', 'timestamp']),之后每行一个数组
  • 注意编码:CSV 默认无 BOM,若用 Excel 打开中文乱码,可在写入前加 \xEF\xBB\xBF(UTF-8 BOM)
  • 写完记得 fclose(),否则文件可能不完整
$fp = fopen('./outputs/links_' . date('Ymd_His') . '.csv', 'w');
fputs($fp, "\xEF\xBB\xBF"); // 写入 UTF-8 BOM
fputcsv($fp, ['short_url', 'real_url', 'timestamp']);
foreach ($results as $row) {
    fputcsv($fp, [
        $row['short'],
        $row['real'],
        date('Y-m-d H:i:s', $row['time'])
    ]);
}
fclose($fp);

还原后直接触发浏览器下载,不存服务器

如果不想在服务器留文件,而是让用户点击就下载 CSV 或 TXT,关键在三步:header() 设置类型 + 编码 + 下载名,然后 echo 内容,最后 exit 阻止后续输出。

微信公众号文章生成技能(专业版)
微信公众号文章生成技能(专业版)

name wechat-article-writer-pro description 微信公众号文章完整生成技能(专业版)。输入主题即自动完成:信息调研、文章撰写(含章节配图)、5个备选爆款标题、封面图生成、带格式排版的DOCX文档输出。触发词:写公众号文章、生成公众号内容、做微信推文、公众号文章完整版。 agent_created true 微信公众号文章完整生成技能(专业版) 概述 本技能提供微信公众号文章从主题到成品的完整生成流程,在基础版之上增加:章节配图、DOCX 格式输出(含彩色重点文字和表格

下载
  • Content-Type 必须匹配内容:CSV 用 text/csv,TXT 用 text/plain
  • Content-Disposition 中的 filename= 值不能含路径、空格或中文(建议用英文+时间戳)
  • 输出前确保无任何 echo、print、空白符,否则 header 会报 headers already sent
  • 大文件慎用此法——全部加载进内存再输出,容易超 memory_limit
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename="short_links_export.csv"');
header('Pragma: no-cache');
header('Expires: 0');

$output = fopen('php://output', 'w');
fputs($output, "\xEF\xBB\xBF");
fputcsv($output, ['short_url', 'real_url']);
foreach ($results as $r) {
    fputcsv($output, [$r['short'], $r['real']]);
}
fclose($output);
exit;

常见错误:cURL 跟跳后没拿到最终 URL,导致导出内容为空

短链还原核心在 HTTP 重定向跟踪,但很多人只调 curl_exec() 却忽略 CURLOPT_FOLLOWLOCATION 和 CURLOPT_NOBODY 的组合逻辑。不设对参数,curl_getinfo($ch, CURLINFO_EFFECTIVE_URL) 返回的仍是原始短链地址。

立即学习“PHP免费学习笔记(深入)”;

  • 必须开启 CURLOPT_FOLLOWLOCATION => true,否则 cURL 不自动跳转
  • 设 CURLOPT_NOBODY => true 可跳过响应体下载,提速且省内存(我们只要头里的 Location 或最终 URL)
  • 某些短链服务(如微博、微信)会返回 302 但禁用跨域跳转,或加了反爬 headers,此时需补 CURLOPT_USERAGENT 和 CURLOPT_REFERER
  • 别依赖 curl_getinfo($ch, CURLINFO_REDIRECT_URL) —— 它只返回最后一次跳转的中间地址,不是最终地址
$ch = curl_init($short_url);
curl_setopt_array($ch, [
    CURLOPT_NOBODY => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_USERAGENT => 'Mozilla/5.0 (X11; Linux x86_64)',
    CURLOPT_TIMEOUT => 10,
]);
curl_exec($ch);
$real_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
curl_close($ch);
导出功能看似简单,真正卡住人的往往是权限、编码、header 时机、cURL 跳转配置这几个点。尤其是多层跳转或带 JS 重定向的短链,纯 PHP+cURL 拿不到真实地址,这时候就得换 Puppeteer 或 Playwright,但那就是另一回事了。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

3000

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

249

2026.02.03

fclose函数的用法
fclose函数的用法

fclose是一个C语言和C++中的标准库函数,用于关闭一个已经打开的文件,是文件操作中非常重要的一个函数,用于将文件流与底层文件系统分离,释放相关的资源。更多关于fclose函数的相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

822

2023.11.30

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

3683

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

835

2023.10.30

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1778

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2784

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

6144

2023.10.24

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

20

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn