帝国论坛帝国网站管理系统交流区帝国CMS使用交流[分享]内容关键字实现优先长词,图片与链接中不再重复内链 【本版专题贴子】  
 1/2     1 2 ›› ›|
主题:[分享]内容关键字实现优先长词,图片与链接中不再重复内链 [加入收藏夹]   

heygou
用户头衔:书生

精华贴   :0
发贴数   :46
经验值   :270
注册时间:2012-05-14
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
[分享]内容关键字实现优先长词,图片与链接中不再重复内链
踩了不少坑。分享下面这段代码给有需要的人   还有请大神帮忙解决另一个问题,内容关键字数量多会出现不替换的问题。

修改位置/e/class/funtions.php
1.优先长词    "select keyname,keyurl from {$dbtbpre}enewskey".$where 改成 "select char_length(keyname) AS num,keyname,keyurl from {$dbtbpre}enewskey".$where." ORDER BY num DESC" //order前面有个空格
2.不再重复内链 需要修改两处   '/'.$r[keyname].'/i' 改成 '/'.$r[keyname].'(?!([^<]*>)|([^<]*<\/a>))/i'  




//替换关键字
function ReplaceKey($newstext,$classid=0){
        global $empire,$dbtbpre,$public_r,$class_r;
        if(empty($newstext)||$class_r[$classid]['keycid']==-1)
        {return $newstext;}
        $where='';
        if(!empty($class_r[$classid]['keycid']))
        {
                $where=" where cid='".$class_r[$classid]['keycid']."'";
        }
        $sql=$empire->query("select char_length(keyname) AS num,keyname,keyurl from {$dbtbpre}enewskey".$where." ORDER BY num DESC");//优先长词
        while($r=$empire->fetch($sql))
        {
                if(STR_IREPLACE)
                {
                        $newstext=empty($public_r[repkeynum])?str_ireplace($r[keyname],'<a href='.$r[keyurl].' target=_blank class=infotextkey>'.$r[keyname].'</a>',$newstext):preg_replace('/'.$r[keyname].'(?!([^<]*>)|([^<]*<\/a>))/i','<a href='.$r[keyurl].' target=_blank class=infotextkey>'.$r[keyname].'</a>',$newstext,$public_r[repkeynum]);
                }
                else
                {
                        $newstext=empty($public_r[repkeynum])?str_replace($r[keyname],'<a href='.$r[keyurl].' target=_blank class=infotextkey>'.$r[keyname].'</a>',$newstext):preg_replace('/'.$r[keyname].'(?!([^<]*>)|([^<]*<\/a>))/i','<a href='.$r[keyurl].' target=_blank class=infotextkey>'.$r[keyname].'</a>',$newstext,$public_r[repkeynum]);
                }
        }
        return $newstext;
}


[该贴被修改 2 次,最后修改时间 2019-07-09 19:45:44 ]



2019-07-08 11:13:03 已设置保密 顶部 回复 引用 报告 编辑 删除

tkf88
用户头衔:探花

精华贴   :0
发贴数   :8848
经验值   :22522
注册时间:2007-05-26
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 2 楼]

检查是不是有特殊字符的字




2019-07-08 11:17:38 已设置保密 顶部 回复 引用 报告 编辑 删除

就是你
用户头衔:探花

精华贴   :0
发贴数   :2213
经验值   :6513
注册时间:2009-01-17
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 3 楼]

支持




2019-07-09 08:18:37 已设置保密 顶部 回复 引用 报告 编辑 删除

heygou
用户头衔:书生

精华贴   :0
发贴数   :46
经验值   :270
注册时间:2012-05-14
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 4 楼]

你好,如果内容关键字是批量添加的。没办法规避特殊字符 有什么办法过滤呢?特色字符包含哪些?




2019-07-09 10:29:54 已设置保密 顶部 回复 引用 报告 编辑 删除

bgwang
用户头衔:进士

精华贴   :0
发贴数   :956
经验值   :2718
注册时间:2011-03-06
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 5 楼]

支持一下




2019-07-09 11:16:50 已设置保密 顶部 回复 引用 报告 编辑 删除

heygou
用户头衔:书生

精华贴   :0
发贴数   :46
经验值   :270
注册时间:2012-05-14
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 6 楼]

感谢大佬。确认是特殊字符的原因。因为批量导入关键词,而且特殊字符比较少没注意




2019-07-09 19:47:07 已设置保密 顶部 回复 引用 报告 编辑 删除

csdn2
用户头衔:探花

精华贴   :0
发贴数   :4997
经验值   :14855
注册时间:2013-11-21
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 7 楼]

支持下




2019-07-10 06:11:52 已设置保密 顶部 回复 引用 报告 编辑 删除

hibaidu
用户头衔:探花

精华贴   :0
发贴数   :4491
经验值   :13752
注册时间:2010-05-26
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 8 楼]

支持一下




2019-07-10 14:47:50 已设置保密 顶部 回复 引用 报告 编辑 删除

ggqm520
用户头衔:进士

精华贴   :0
发贴数   :1237
经验值   :5290
注册时间:2010-08-15
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 9 楼]

感谢楼主!



基于帝国CMS的Ai即时通讯聊天室:https://www.wenyunfang.com/e/extend/chat/ 签名广告位出售中!!!!!
文韵坊阅读网:https://www.wenyunfang.com
2019-07-10 17:14:04 已设置保密 顶部 回复 引用 报告 编辑 删除

zhxin
用户头衔:探花

精华贴   :0
发贴数   :4479
经验值   :12443
注册时间:2013-01-09
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 10 楼]

支持下




2019-07-11 06:20:20 已设置保密 顶部 回复 引用 报告 编辑 删除
 1/2     1 2 ›› ›|

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1