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

$GLOBALS['whitelist'] = array(‘www.

// 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(

“#()#i”,

create_function(‘$matches’, ‘return fixLink($matches[1]);’),

$str);

}

// receives a string that contains a link such as 

// 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(‘#rels*?=s*?['"]?.*?nofollow.*?['"]?#i’, $input))

{

return $input;

}

// extract the URL from $input

preg_match(‘#hrefs*?=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(‘#(rels*=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(‘#

}

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值