前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谈PHP自动为任意网站关键字添加内链的实现方法

谈PHP自动为任意网站关键字添加内链的实现方法

原创
作者头像
于飞云计算
修改2019-07-17 10:01:25
1.1K0
修改2019-07-17 10:01:25
举报

虽然市面上很多开源的CMS系统,都已经非常成熟,拥有内链功能或者相应的插件,但是还有一些自主开发的网站程序,并不具备自动添加内链的功能,那怎么实现呢?然后通过全百科网近来的探索研究,终于有了一些成果,今天就给大家谈一下通过PHP代码四则(每一则都是相对独立的)如何给任意网站关键字添加相应的内部链接原理、实现方法、以及实例代码分享。

20190716100929.jpg
20190716100929.jpg

一则

一个PHP自动生成关键字内链的类

<?php
/**
* 作者:全百科网
* 网站:http://www.quanbaike.com/
* 实例:php自动生成关键字的内链
*/
include_once(dirname(__file__)."/../db/DBViewSpot.php" );
class InnerLink{
    private static $spotUrlMap;
    /**
     * Generate view spots keywords link
     *
     * @param string $description
     * @param array $spotUrlMap
     * @return string
     */
    public static function genSpotLink($basePath, $description)
    {
        if(empty(InnerLink::$spotUrlMap)){
            InnerLink::$spotUrlMap = DBViewSpot::getSpotPare();
        }
        // 排除不规则数据
        if ( empty($description)) {
            return $description;
        }
        foreach (InnerLink::$spotUrlMap AS $spotUrlPair){
            $replace = "<a target='_blank' href='http://www.quanbaike.com/".$basePath."/".$spotUrlPair[1].".html'>".$spotUrlPair[0]."</a>";
            // 描述里面只有文字,没有图片,所以只要注意 a 链接
            $tmp1 = explode("<a",$description);
            $is_replaced=false;
            foreach ($tmp1 as $key=>$item){
                $tmp2 = explode("</a>",$item);
                if (sizeof($tmp2)>1) {
                    if (substr($tmp2[0],0,1)!="a" && substr($tmp2[0],0,1)!="A"){
                        if ($is_replaced===false) {
                            $tmp2[1] = InnerLink::str_replace_once($spotUrlPair[0],$replace,$tmp2[1],$is_replaced);
                        }
                        $tmp1[$key] = implode("</a>",$tmp2);
                    }
                }else {
                    if (is_string($item) && $is_replaced===false) {
                        $tmp1[$key] = InnerLink::str_replace_once($spotUrlPair[0],$replace,$item,$is_replaced);
                    }
                }
            }
            $description = implode("<a",$tmp1);
        }
        return $description;
    }
    /**
     * replace key word for one time
     *
     * @param string $needle
     * @param string $replace
     * @param string $haystack
     * @param bool $is_replaced
     * @return string
     */
    private static function str_replace_once($needle, $replace, $haystack,&$is_replaced) {
        $pos = strpos($haystack, $needle);
        if ($pos === false) {
            return $haystack;
        }
        $is_replaced=true;
        return substr_replace($haystack, $replace, $pos, strlen($needle));
    }
}

二则

使用php数组为文章内容自动加内部链接的代码

PHP给文章加关键字链接,类似网易文章内容自动加链接的效果,很多php网站内容管理系统里面都有,也可以参考下里面的代码。 例子:

<?php
$keys =array(
array('源码下载','http://www.quanbaike.com/scxz/ymxz'),
array('简历模版','http://www.quanbaike.com/scxz/word/grjlxz'),
array('免费资源','http://www.quanbaike.com/scxz/免费资源'),
array('技术交流','http://www.quanbaike.com/jsjl'),
);
$str ="全百科网是集热点信息与网络商业资源分享的多元化信息网络平台,专注为用户提供免费的资源下载服务与个性化服务需求。";
echo $str,"<br>";
foreach($keys as $nkeys){
//print_r($nkeys);echo"<br>";
//foreach( $nkeys as $join) {
//echo($join),"<br>";
if(strpos($str,$nkeys[0]) ){
$str =str_replace($nkeys[0],"<a href=http://www.quanbaike.com".$nkeys[1]." target=_blank >".$nkeys[0]."</a>",$str);
}
//}
}
echo $str;
?>

三则

php添加关联链接的代码

在做网站优化时,为了优化内链,需要将内容添加上关键字链接。那么,如果需要在内容上添加关联链接,应该如何操作呢? 方法一:手动编辑添加 方法二:使用程序在输出内容时实现,又不影响后台内容的编辑。 以下就是php自动给文章内容添加关联链接方法和示例,供大家学习参考。 Keylinks函数方法: 参数一:要处理的内容 参数二:替换次数 返回结果:处理后的内容

例子:

<?php
/**
* php关联链接
*/
header("Content-Type:text/html;charset=utf-8"); //设置编码
$linkdatas=array(
array('免费下载', 'http://www.quanbaike.com/'),
array('简历模版', 'http://www.quanbaike.com/'),
array('源码下载', 'http://www.quanbaike.com/'),
array('全百科网', 'http://www.quanbaike.com/'),
);
echo "替换前<br/>";
echo $str='全百科网是集热点信息与网络商业资源分享的多元化信息网络平台,专注为用户提供免费的资源下载服务与个性化服务需求。';
echo "<br/>替换后<br/>";
echo $str=keylinks($str,2);
/**
* 关联关键词替换
* @param txt $string 原字符串
* @param replacenum $int 替换次数
* @return string 返回字符串
*/
function keylinks($txt, $replacenum = '') {
global $linkdatas;
if ($linkdatas) {
$word = $replacement = array();
foreach ($linkdatas as $v) {
$word1[] = '/(?!(<a.*?))' . preg_quote($v[0], '/') . '(?!.*<\/a>)/s';
$word2[] = $v[0];
$replacement[] = '<a href="' . $v[1] . '" target="_blank" class="keylink">' . $v[0] . '</a>';
}
if ($replacenum != '') {
$txt = preg_replace($word1, $replacement, $txt, $replacenum);
} else {
$txt = str_replace($word2, $replacement, $txt);
}
}
return $txt;
} 
?>

四则

PHP 文章实现内链

下面说说我初步实现的方法:

1、用程序批量生成关键词和链接对应的库或手动添加关键词和链接库(库可以用数组的格式以文件的形式存储)

2、在view页面输出内容时执行查找替换的操作。上代码吧

<?php  
header("Content-Type:text/html; charset=utf-8");  
$arr = array(  
    "关键字" => "http://www.quanbaike.com/",  
    "全百科网" => "http://www.quanbaike.com/",  
    "免费下载" => "http://www.quanbaike.com/",  
);  
ksort($arr);  //对关键词排序,短词排在前面  
$str = "这是我写一个关于windows和linux的测试字符串,我要从这个字符串中给相关的关键词全百科网、免费下载添加相应链接";  
echo "原始字符串:" . $str . "<br/><br/>";  
//遍历关键词库  
foreach ($arr as $k => $v) {  
    //查找第一次出现的关键词并替换加上对应的链接  
    $str= preg_replace('/'.$k.'/','<a href="'.$v.'" target="_blank">' . $k . '</a>',$str,1);  
}  
echo $str;  
?>

原始字符串是:

这是我写一个关于全百科网和免费下载的测试字符串,我要从这个字符串中给相关的关键词全百科网、免费下载添加相应链接

替换完后是:

这是我写一个关于<a href="http://www.quanbaike.com/" target="_blank">全百科网</a>和
<a href="http://www.quanbaike.com/" target="_blank">免费下载</a>的测试字符串,我要从这个字符串中给相关的关键词全百科网、免费下载添加相应链接"; 

相信你已经对给网站自动添加内部链接的实现有一定的了解了,如果你有更好的实现方法,欢迎在评论区留言。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一则
  • 二则
  • 三则
  • 四则
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档