清理知乎文章中的站内搜索链接或外链
目的:改善阅读体验,怀念知乎遗风
清理知乎回答中的搜索关键词
Sample Text:
<p>所以脖子应该是更早做[汉芯](https://www.zhihu.com/search?q=汉芯&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra={"sourceType"%3A"answer"%2C"sourceId"%3A2887595601})的时候就卡住了。
几十年[急功近利](https://www.zhihu.com/search?q=急功近利&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra={"sourceType"%3A"answer"%2C"sourceId"%3A2887595601})追求弯道超车,其实弯道的时候翻车更多。
</p>
Search Regex:
/\[(.*?)\]\(https:\/\/www.zhihu.com\/search.*?\)/
Replace Expression: \1
解释正文中的搜索关键词都是以链接的方式嵌入的,文本部分放在 [] ,链接的 url 则是以 search 路径开头,所以,我们将文本提出到第一个 group,剩余的内容抛弃。最后在替换步骤用 \1
反引用第一个 group 的内容,即可实现提纯。
清理外链提醒
如果问题答案中或专栏文章中有一个外链,那么它的 href
标签会被改成 https://link.zhihu.com/?target=https%3Awww.v2ex.com/xxxxxx
这样的网址。
对于非知名网站,知乎安全中心会提醒你即将离开知乎,请注意帐号和财产安全,点击继续访问后才能进入。若是你经常看综述型的文章真是烦不胜烦,可直接使用下面的简短代码来去除;同理,也可用于油猴脚本在页面加载完成后自动触发,或手动执行即可。
const tags = ["a[href^='https://link.zhihu.com']", "a[href^='http://link.zhihu.com']"]
tags.forEach((tag) => {
document.querySelectorAll(tag).forEach((aEle) => {
if (!aEle || !aEle.href) return;
let href = aEle.href.trim().replace(/^.*link\.zhihu\.com\/\?target=(.*?)$/im, '$1')
.trim().replace(/^\s*http[^\/]*\/\//, 'http://');
href = decodeURIComponent(href); // 把有特殊含义的字符串,解码回原字符,如 `%3A` 表示 `:`
aEle.href = href;
});
})
后续若有更多清理项,再做更新。