首页 >> SEO优化 >> 自动给垃圾链接加nofollow的php代码

自动给垃圾链接加nofollow的php代码

Catagory:SEO优化, Date:2011年04月21日,Author: 工业品营销-贾定强

如果你的网站正在受到垃圾留言的骚扰的话,下面的php代码也许对你会很有帮助。它的功能很简单,就是将一段string中的链接元素加上nofollow标签。代码如下:

<?php

$GLOBALS[‘whitelist’] = array(‘www.jiadingqiang.com’, ‘www.seoshare.net’);

// finds all the links in $str and processes them using fixLink()
function noFollowLinks($str)
{
// replaces every link with the version provided by fixLink()
return preg_replace_callback(
“#(<a.*?>)#i”,
create_function(‘$matches’, ‘return fixLink($matches[1]);’),
$str);
}

// receives a string that contains a link such as <a href=”http://too.much.spam/”>
// and adds the ref=”nofollow” attribute if the domain isn’t in the white list
function fixLink($input)
{
// retrieve the whitelist from the config file
$whitelist = $GLOBALS[‘whitelist’];

// if the link in $input already contains ref=”nofollow”, return it as it is
if (preg_match(‘#rel\s*?=\s*?[\'”]?.*?nofollow.*?[\'”]?#i’, $input))
{
return $input;
}

// extract the URL from $input
preg_match(‘#href\s*?=\s*?[\'”]?([^\'”]*)[\'”]?#i’, $input, $captures);

// $href will contain the extracted URL, such as http://seophp.example.com
$href = $captures[1];

// if URL doesn’t contain http://, assume it’s a local link
if (!preg_match(‘#^\s*http://#’, $href))
{
return $input;
}

// extract the host name of the URL, such as seophp.example.com
$parsed = parse_url($href);
$host = $parsed[‘host’];

// if the URL is in the whitelist, send $input back as it is
if (in_array($host, $whitelist))
{
return $input;
}

// assuming the URL already has a rel attribute, change its value to nofollow
$x = preg_replace(‘#(rel\s*=\s*([\'”]?))((?(3)[^\'”]*|[^\'” ]*))([\'”]?)#i’,
‘\\1\\3,nofollow\\4’, $input);

// if the string has been modified, it means it already had a rel attribute,
// whose value has been changed to nofollow, so we return the new version
if ($x != $input)
{
return $x;
}
// if the link in the input string doesn’t have ref attribute, we add it
else
{
return preg_replace(‘#<a#i’, ‘<a rel=”nofollow”‘, $input);
}
}

?>

 

使用方法也很简单

<?php

echo noFollowLinks(‘<p>Hello! Take a look at <a href=”http://www.jiadingqiang.com”>google seo</a>!</p>’);

echo noFollowLinks(‘<p>Hello! Take a look at <a href=”http://www.baidu.com”>baidu</a>!</p>’);

?>

最终的效果是,所有不在$GLOBALS[‘whitelist’]中的域名网址都会加上nofollow标签。

来源:工业品营销,原文地址:http://www.jiadingqiang.com/2118.html,欢迎分享本文,转载请保留出处!

Comments: 13 Responses to “ 自动给垃圾链接加nofollow的php代码 ”
六月 16th, 2012
simon 说 Said:

我想问一下这个功能是适合所有php程序吗?有没有限制的?
还有在使用方法方面,是直接在页面代码头部引用这2段代码吗?

[回复]

九月 26th, 2011

这个的确需要研究一下

[回复]

八月 5th, 2011
肝病药品 说 Said:

这个需要研究研究

[回复]

五月 22nd, 2011

我也想学习php语言,不知强子能不能推荐几本经典的书籍呢?

[回复]

小强 回复:

w3school,我一般都在这里学习。

[回复]

五月 19th, 2011
南通seo 说 Said:

我试试 不过要研究下

[回复]

五月 8th, 2011

很强大,估计以后会用到,现在暂时用着ASP的程序

[回复]

五月 4th, 2011

试试看,防止垃圾链接到处太多,影响网站

[回复]

四月 28th, 2011
美白产品 说 Said:

我的是asp空间,可以使用nofollow标签吗

[回复]

小强 回复:

把php语法改成asp的就可以了

[回复]

四月 22nd, 2011
小说排行榜 说 Said:

这样啊 很强大哦

[回复]

四月 22nd, 2011
韩国 说 Said:

这个ref=”nofollow” 代码 就可以屏蔽掉吗?

[回复]

四月 22nd, 2011

还是沙发哦,呵呵

[回复]

你也来说几句:

名字*必填
邮箱*必填,不会被公开
网站
QQ群交流
最近文章
文章归档
  • 2017 (3)
  • 2016 (30)
  • 2015 (63)
  • 2014 (21)
  • 2013 (38)
  • 2012 (25)
  • 2011 (67)
  • 2010 (268)
  • 2009 (19)