全百科精品资源分享
免费优质资源下载平台

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

文章目录

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

原始字符串是:

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

替换完后是:

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

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

Free Download WordPress Themes
Download Best WordPress Themes Free Download
Download Nulled WordPress Themes
Free Download WordPress Themes
online free course
download lenevo firmware
Download WordPress Themes
download udemy paid course for free

本文由全百科网分享提供,分享更多精品资源,帮助你我共同成长。

赞(0) 打赏
本站内容均来自网络收集,转载内容不代表本网站的观点及意见,仅供用户参考和借鉴。如对稿件内容及版权问题有疑议,请及时联系全百科官方邮箱: smtsg@foxmail.com全百科网 » 谈PHP自动为任意网站关键字添加内链的实现方法
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏