谈PHP自动为任意网站关键字添加内链的实现方法
时间:2022-06-26
本文章向大家介绍谈PHP自动为任意网站关键字添加内链的实现方法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
虽然市面上很多开源的CMS系统,都已经非常成熟,拥有内链功能或者相应的插件,但是还有一些自主开发的网站程序,并不具备自动添加内链的功能,那怎么实现呢?然后通过全百科网近来的探索研究,终于有了一些成果,今天就给大家谈一下通过PHP代码四则(每一则都是相对独立的)如何给任意网站关键字添加相应的内部链接原理、实现方法、以及实例代码分享。
一则
一个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>的测试字符串,我要从这个字符串中给相关的关键词全百科网、免费下载添加相应链接";
相信你已经对给网站自动添加内部链接的实现有一定的了解了,如果你有更好的实现方法,欢迎在评论区留言。
- Go语言单链表实现方法
- Go语言实现AzDG可逆加密算法实例
- 剖析Go编写的Socket服务器模块解耦及基础模块的设计
- Golang中的sync.WaitGroup用法实例
- Go 语言实现 MapReduce 框架
- Performance Schema使用简介(一)
- golang 垃圾回收 gc
- Go语言服务器开发之简易TCP客户端与服务端实现方法
- 移动搜索SEO分享:PHP自动生成百度开放适配及360移动适配专用的Sitemap文件
- 分享两种外链跳转方法,可避免权重流失。
- go语言十大排序算法总结
- 网站安全检测提示“页面异常导致本地路径泄漏”的解决办法
- Go语言归并排序算法实现
- 超強统计插件:My Visitors在知更鸟主题下的修改教程
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC