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

博客热门评论者脚本无法识别►等特殊符号导致排除用户名失效,如何解决?

问题根因排查

  • 最常见的原因是Feed接口返回的特殊符号没有被直接解析为Unicode字符,而是被转义为HTML实体(►对应►,◄对应◄),和你在排除列表里写的原生符号不匹配,严格相等判断自然失效
  • 其次可能是用户名中存在肉眼不可见的特殊字符(比如零宽空格、控制字符)、或者前后/符号旁存在多余空格,导致字符串无法完全匹配

修复方案

第一步:先确认实际获取的用户名内容

在你现有代码的var authorName = entry.author[0].name.$t;行后插入一行调试代码,打印真实返回的用户名编码:

console.log("实际用户名编码:", encodeURIComponent(authorName));

打开页面控制台触发脚本运行,找到对应带特殊符号用户名的输出,和你预期的encodeURIComponent("► JUCA ELE ◄")结果对比,即可确认是否存在字符差异。

第二步:替换原有匹配逻辑,使用归一化后的值做判断

将原有代码中if(excludeUsers.indexOf(authorName) != -1) continue;的部分替换为如下代码,自动处理转义、不可见字符、空格差异问题:

// 字符串归一化:消除转义、不可见字符、空格差异的影响
function normalizeName(name) {
  // 解码HTML实体为原始字符
  const txt = document.createElement('textarea');
  txt.innerHTML = name;
  let res = txt.value;
  // 移除零宽字符、控制类不可见字符
  res = res.replace(/[\u200B-\u200D\uFEFF\x00-\x1F\x7F]/g, '');
  // 统一空格格式,移除首尾多余空格
  res = res.replace(/\s+/g, ' ').trim();
  return res;
}

// 预先归一化所有排除用户名
const normalizedExcludes = excludeUsers.map(u => normalizeName(u));
// 归一化当前评论者用户名
const normalizedAuthor = normalizeName(authorName);
// 匹配判断
if (normalizedExcludes.includes(normalizedAuthor)) {
  continue;
}

备选快速方案

如果仅需排除该特定用户,可直接增加子串匹配判断,无需完全匹配特殊符号:
在原有排除判断前加一行:

if (authorName.includes("JUCA ELE")) continue;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:54:05