给文章自动加超链接的代码

张学良友 发布于 2015/05/26 14:29
阅读 398
收藏 0

下面是一个给文章自动加超链接的代码,但是会出现重复超链接的问题,比如说“超链接” 为一个词,“链接”为一个词,就会出现

<a href="http://www.xxx.com/new-1.html">超<a href="http://www.xxx.com/new-2.html">链接</a></a>

我用的程序为:

function keywordlink($content){
$count = 1;
$linkkey=array();
$linkstr=array();
$scsql="select * from keylist order by LENGTH(keyword) desc";
$scsql=mysql_query($scsql) or die("查询失败,编码号:03");
while ($rssc=mysql_fetch_array($scsql)) {
$linkkey[]="/".trim($rssc["keyword"])."/";
$linkstr[]="<a href=\"http://www.xxx.com/news-".trim($rssc["id"])."-1.html\" target=\"_blank\">".$rssc["keyword"]."</a>"; 
}
$str = preg_replace($linkkey,$linkstr, $content,$count);
return $str;
}



求解决

加载中
0
houhuiliang
houhuiliang
function keywordlink($content){
	$count = 1;
	$linkkey=array();
	$linkstr=array();
	$scsql="select * from keylist order by LENGTH(keyword) desc";
	$scsql=mysql_query($scsql) or die("查询失败,编码号:03");
	
	$keys = array();
	
	while ($rssc=mysql_fetch_array($scsql)) {
		
		$check = checkSimilarKey($keys, trim($rssc["keyword"]));
		
		if(($check===false) && stripos($content, trim($rssc["keyword"]) )!==false){
			$keys[] = trim($rssc["keyword"]);
			$linkkey[]="/".trim($rssc["keyword"])."/";
			$linkstr[]="<a href=\"http://www.xxx.com/news-".trim($rssc["id"])."-1.html\" target=\"_blank\">".$rssc["keyword"]."</a>";
			$content = preg_replace($linkkey,$linkstr, $content,$count);
		}
		
	}
	return $str;
}

function checkSimilarKey($keys,$key){
	if(!empty($keys)){
		foreach($keys as $keyItem){
			if(stripos($key, $keyItem)!==false || stripos($keyItem, $key)!==false){
				return true;
			}
		}
	}
	return false;
}


我这个思路是已经替换过的放到一个$key数组,每次替换前先检查相似的关键词有没有在$key数组,如果在就不再执行,不在就执行并把新key放到$key数组

0
CIHNASSL
CIHNASSL
好,我也需要这个东西
0
houhuiliang
houhuiliang
@张学良友 可以吗
0
张学良友
张学良友
@houhuiliang   可以了。非常感谢。
0
张学良友
张学良友
遇到某些字,会乱码掉。
返回顶部
顶部