Thinkphp文章关键词自动加链接-内链模块

南国老符 南国老符 最后更新于:2022-05-09 浏览:1067

Thinkphp 文章关键词自动加链接-内连模块

首先建立关键词表 命名为 xx_sitelink

表结构 id   link keyword

在前台项目下新建 ReplaceAction.class.php文件,建立替换链接模块 

<?phpclass ReplaceAction extends Action{private $text;public function __toString() {return $this->replace();}//返回替换结果public function content($text){$this->text=$text;}//获取内容给$textprivate function replace(){ //替换函数
   $keywords=$this->keywords();   $pattern =implode(‘|‘,array_keys($keywords));   $pattern ="/((?<!<))($pattern)(?![^<>]*(?:>|<\/a>))/";   return preg_replace_callback($pattern,array($this,callback),$this->text);
}private function callback($matches) { //正则替换回调函数
   global $log; //替换记录,替换过则不在进行相同替换
   if($log[$matches[2]])   return $matches[0];   $log[$matches[2]]=true;   $keywords = $this->keywords();   $link      = $keywords[$matches[2]];   return "<a href=‘$link‘>$matches[2]</a>";
}private function keywords(){ //查找关键词
   $Keywords = M("Sitelink");   $Keywords = $Keywords->where("link<>‘‘")->select();   foreach ($Keywords as $key => $value) {    if (strpos($this->text,$value[keyword])){ //内容中包含关键词存入数组
     $m[$value[keyword]]=$value[link];
    }
   }   krsort($m);//对数组进行逆向排序,最长关键词优先替换
   return $m;
}
}
同项目下调用 $Form = M(‘text‘);$data   = $Form->find($id);if($data) {    $Replace = A("Replace");    $Replace ->content($data[content]); //$data[content]为你的正文字段
    $data[content]=$Replace;
}$this -> assign(‘data‘,$data);?>

点赞 (0)

收藏 (0)
转载请务必注明: 来源:《建站管家》https://www.df81.com/news/365.html

本站部分信息来源网络,如有侵权,请联系QQ:1062129401删除。

上一篇: 浅谈ThinkPHP与手机 APP 开发(API 接口开发)

下一篇: CSS渐变背景详细教程

请先登录后,再发表评论 ~ ~
发表评论
发表帖子
广告位招租( ¥5 / 天 )
点击咨询
最新帖子

南国老符
2025-09-10 03:48
南国老符
2025-07-13 19:36
南国老符
2025-05-26 16:54
南国老符
2024-09-29 10:29
广告位招租( ¥5 / 天 )
点击咨询
最近评论

Y
yuanis90
回复:在后台->全局管理->网站设置->网站html代码,把你申请的分享代码贴到这里保存即可。以后发问题,请贴出具体版本号
南国老符
回复:发表帖子发不了  乱码
南国老符
回复:第一位参与的老总,是做洗衣店saas系统的,需要的请联系
9
9252
回复:新版已经修复了的,升级忘记覆盖了,你重新下载即可。
U
user1304
回复:PHP开启fileinfo扩展即可
U
user1379
回复:版本号多少?
购买VIP
购买授权
余额充值
发表帖子
客服微信