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

知识技术 2022-05-09 22:56 772
转载请务必注明: 来源:《建站管家》https://www.df81.com/news/365.html

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)

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

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

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

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

如果要判断文件是否存在,用函数 is_file(),如果要判断目录是否存在,用函数 is_dir()
用宝塔安装TP程序后,网站前台可以访问,后台无法访问,不是程序问题,而是web服务器环境配置问题(PHP配置),出现这种问题,一般是windows主机安装宝塔造成的,linux安装宝塔不会出现此错误
广告位招租( ¥3 / 天 )
点击咨询
广告位招租( ¥2 / 天 )
点击咨询
广告位招租( ¥1 / 天 )
点击咨询
最新帖子

小朋友,你爸爸是谁啊?这很单纯的,就像我们碰到别人会问:你吃过饭了吗?类似;许多人初次相识,经常会问:你是做什么的啊?你做什么,好像决定你收入的高低,你,资产的范围
1、升级框架到ThinkPHP8.0.3【要求PHP8.1+环境,推荐PHP8.1】 2、启用/禁用调试模式等小细节改进
后台点击生成站点地图 一直转圈圈没有反应,
在线客服