有时候需要对文章进行自动处理nofollow,防止权重流失。
$host为不需要进行处理的站点域名,否则全部自动加上nofollow。
首先正则出a标签和href,然后进行每一层级判断处理。
如果是外链,而且没有nofollow就自动加上。
/** * 自动处理外链加上rel="nofollow" */ function webOutUrlDispose($html) { $host = ['www.apizl.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)'/}
关键字词: