短链接还原php支持哪些格式_常见编码类型兼容说明【说明】

18次阅读

必须启用curl重定向跟随并用CURLINFO_EFFECTIVE_URL获取最终URL,优先信任Header中的charset,生产环境推荐cURL而非file_get_contents。

短链接还原php支持哪些格式_常见编码类型兼容说明【说明】

短链接还原时遇到 301/302 重定向无法捕获怎么办

php 本身不自动跟随重定向,file_get_contents()curl_exec() 默认拿到的是跳转响应而非最终目标 URL。必须显式启用重定向跟随,否则会卡在中间跳转页(比如返回 location: https://example.com/real 的 header)。

  • curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true) 是必需的,但仅此不够
  • 若跳转链含跨域(如 t.co → twitter.com),还需加 curl_setopt($ch, CURLOPT_MAXredIRS, 5) 防止无限跳
  • 某些短链服务(如 bit.ly)返回 302 + Cache-Control: no-store,需确保 curl_setopt($ch, CURLOPT_HEADER, false) 关闭头输出干扰解析
  • curl_getinfo($ch, CURLINFO_EFFECTIVE_URL) 获取最终落地 URL,而不是解析 Location header —— 后者在多级跳时不可靠

支持哪些编码格式的短链响应体

短链服务返回的响应体通常为空或极简 html,但少数(如微信内嵌短链、企业微信跳转页)可能返回 UTF-8、GBK 甚至带 bom 的 UTF-8-BOM 页面。PHP 的 mb_detect_encoding() 在空响应或无 Content-Type 时极易误判。

  • 优先信任 HTTP header 中的 Content-Type: text/html; charset=utf-8,用 mb_convert_encoding($html, 'UTF-8', $detected) 统一转码
  • 若 header 缺失 charset,且响应体含 锛岄渶鐢ㄦ
text=ZqhQzanResources