【问题标题】:PHP regular expression to add rel="nofollow" to external links [duplicate]PHP正则表达式将rel =“nofollow”添加到外部链接[重复]
【发布时间】:2013-07-13 12:03:45
【问题描述】:

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

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

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

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

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

我怎样才能一步完成?有可能吗?

【问题讨论】:

标签: php regex seo nofollow


【解决方案1】:

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 2012-12-01
    • 2011-06-29
    相关资源
    最近更新 更多