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

作者:南国老符 分类:知识技术 浏览:234 日期:2022-05-09 来源: 建站管家


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);?>

本站部分信息来源网络,由于作者无法考证等因素,未注明出处,如有侵权,请联系删除。

上一篇: 《建站管家》二次开发文档

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


发表评论
昵称 (必填)
邮箱
网址
评论 (0)
QQ客服
客服微信
加QQ群