主页 > 编程资料 > PHP >
发布时间:2018-10-20 作者:apizl 阅读:525次

有时候需要对文章进行自动处理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;
}


php使用正则处理文本或文章中外链全部自动加上nofollow及dedecms使用


dedecms使用的话,需要在/include/extend.func.php下新增如上方法,

模板调用:

{dede:field.body function='webOutUrlDispose(@me)'/}


文章由爱资料原创本文地址:https://www.apizl.com/archives/view-148732-1.html,转载请以链接形式标明本文地址!
关键字词: