自动内链需基于thinkphp扩展实现,核心是精准安全替换:建tp_keyword_link表管理关键词、url等字段,缓存加载;用负向断言正则避开html标签和已有链接,确保仅在文本内容中整词匹配。

自动内链的核心逻辑要理清
ThinkPHP本身不内置文章关键词自动内链功能,但它的扩展性和模板渲染机制非常适合二次开发。关键不是“能不能做”,而是“怎么让替换既精准又安全”——既要命中正文中的关键词,又不能误改HTML标签、script内容或已存在的链接文本。
关键词库设计与加载方式
建议在数据库中新建一张表`tp_keyword_link`,字段至少包含:keyword(需匹配的词)、url(目标链接)、is_case_sensitive(是否区分大小写)、min_length(最小匹配长度,防短词泛滥)。
在控制器或公共服务类中统一读取并缓存该表数据,避免每次渲染都查库。可用ThinkPHP的Cache门面做一次加载+永久缓存,更新关键词时再手动清除。
正则替换必须避开HTML标签
直接用str_replace会污染<a href="xxx"></a>里的文字或<img alt="xxx">,导致页面错乱。正确做法是用带负向断言的正则:
- 匹配条件:仅在非HTML标签区域、且为完整单词边界处生效
- 示例模式:
/\b(?)/iu - 其中
(?防止匹配在属性值内,<code>(?










