虽然市面上很多开源的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>的测试字符串,我要从这个字符串中给相关的关键词全百科网、免费下载添加相应链接";
相信你已经对给网站自动添加内部链接的实现有一定的了解了,如果你有更好的实现方法,欢迎在评论区留言。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有