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

PHP使用Embed包获取中文页面标题返回%编码乱码如何解决

问题原因

你看到的%开头的字符序列是URL百分号编码结果:embed包在解析部分站点标题时出现了优先级错误,把URL路径里编码后的中文字符串误判为页面标题返回,没有做解码处理。你遇到的%E4%BA%9E%E9%A6%AC%E9%81%9C%E5%85%AC%E5%8F%B8本质就是「亞馬遜公司」URL编码后的结果,不属于乱码。

解决方法

快速修复:手动解码返回值

PHP原生提供urldecode()函数专门处理这类百分号编码内容,拿到返回值后直接解码即可输出正常中文:

$rawTitle = $info->title;
$correctTitle = urldecode($rawTitle);

为了避免误处理本身带%字符的正常标题,可以加一层合法性校验,只有解码后是合法UTF-8字符时才使用解码结果:

$title = $info->title;
$decoded = urldecode($title);
if (str_contains($title, '%') && mb_check_encoding($decoded, 'UTF-8')) {
    $title = $decoded;
}

根治方案:调整解析逻辑

旧版本embed包的标题解析规则存在缺陷,会把URL路径片段作为高优先级标题来源,你可以按以下方式调整:

  • 将依赖包升级到最新稳定版本
  • 初始化解析实例时调整标题提取优先级,强制优先读取页面<title>标签、OpenGraph元数据中的标题内容,把URL路径提取规则放到最低优先级,避免误取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 01:09:24