有时候需要对文章进行自动处理nofollow,防止权重流失。
$host为不需要进行处理的站点域名,否则全部自动加上nofollow。
首先正则出a标签和href,然后进行每一层级判断处理。
如果是外链,而且没有nofollow就自动加上。
/**
* 自动处理外链加上rel="nofollow"
*/
function webOutUrlDispose($html)
{
$host = ['www.123.com', $_SERVER['HTTP_HOST']];//站点host
$pattern = '/<a href="([^"]*)"[^>]*>.*<\/a>/';
preg_match_all($pattern, $html, $matches);
for ($i = 0; $i < count($matches[0]); $i++) {
if (!strstr($matches[1][$i], '://')) {
continue;
}
$array = parse_url($matches[1][$i]);
if (in_array($array['host'], $host)) {
continue;
}
if (!strstr($matches[0][$i], 'rel=')) {
$yuan = $matches[0][$i];
$matches[0][$i] = str_replace('<a', '<a rel="nofollow"', $matches[0][$i]);
$html = str_replace($yuan, $matches[0][$i], $html);
}
}
return $html;
}
dedecms使用的话,需要在/include/extend.func.php下新增如上方法,
模板调用:
{dede:field.body function='webOutUrlDispose(@me)'/}