由于我的站点是自己基于thinkphp开发的,之前并没有考虑到关键词自动内链的功能,关键词自动内链的功能是很多网站CMS自带的,比如dedecms、pbootcms、帝国cms等等。虽然之前用的时候感觉没什么,可是真要自己开发还是有一点担心影响网站整体加载速度的。看了网上的一些说明,发现跟我自己想的也差不多,那么暂时忽略到性能的问题,把功能先做出来吧。
1、数据表的准备
大概有以下几个字段
| id | word | url | repeat | addtime |
| ID | 关键词 | 链接网址 | 重复次数 | 添加时间 |
2、后台的需要
管理页面、添加页面、编辑页面、删除功能
功能开发其实也不复杂,主要是写一个方法,传递过去我们的内容主体,通过循环匹配我们的内链设置,实现自动插入锚文本链接。
PHP实现网站关键词自动内链的方法有两种:
1、加载内容时嵌入。
在读取内容数据时插入锚链接,但是这样可能会牺牲掉用户访问时的加载速度。
2、发布文章时直接把内链嵌入到文章内容字段。
这样也有弊端,当我们换域名了就需要替换掉文章内容字段理的url,有些删除掉的关键词或者是修改了的关键词,也无法兼顾。
两种方法各有弊端,但是鉴于我们网站以后很可能会有比较长时间的运营,内链的关键词也会不断变化,因此我决定采用第一种方式:加载内容时替换的模式。
PHP实现关键词内链插入代码
写一个方法,通用
//关键词自动内链
function autoLinkKeywords($body,$datas){
foreach ($datas as $data){
$word = $data['link_word'];
$repeat = $data['link_repeat'];
$link = '<a href="'.$data['link_url'].'" target="_blank">'.$word.'</a>';
$body = str_replace($word, $link, $body, $repeat);
}
return $body;
}替换掉文章主体的内容,使用上面的的方法
//关键词内链
//内链集合
$datas= [
['link_word'=>'seo优化','link_url'=>'http://www.xalmi.com/','link_repeat'=>3],
['link_word'=>'seo','link_url'=>'http://www.xalmi.com/','link_repeat'=>2],
];
//关键词数组排序,优先短词链接,防止长短词重复替换
usort($datas, function($a, $b) {
return strlen($a['link_word']) - strlen($b['link_word']);
});
$body = autoLinkKeywords($body,$datas);效果呈现如下:

本文网址:http://www.seobole.com/article/74.html转载请注明出处!文章内容为作者原创或者采编,不代表本站立场,如有侵犯,请联系a5b5_su@163.com。