2

我需要添加rel="nofollow"到所有外部链接(不指向我的网站或其子域)。

我分两步完成了这项工作,首先我rel="nofollow"使用以下正则表达式添加到所有链接(甚至是内部链接):

<a href="http([s]?)://(.*?)"

然后在第二步中,我rel="nofollow"使用以下正则表达式消除内部链接(我的网站及其子域):

<a href="http([s]?)://(www\.|forum\.|blog\.)mysite.com(.*?)" rel="nofollow"

我怎样才能一步一步做到这一点?可能吗?

4

1 回答 1

2

DOM方式:

$doc = new DOMDocument();
@$doc -> loadHTMLFile($url); // url of the html file
$links = $doc->getElementsByTagName('a');

foreach($links as $link) {
    $href = $link->getAttribute('href');
    if (preg_match('~^https?://(?>[^/m]++|m++(?!ysite.com\b))*~', $href))
        $link->setAttribute('rel', 'nofollow');
}

$doc->saveHTMLFile($url);
于 2013-07-13T12:22:19.667 回答