如果没有使用PHP存在标题标记,则添加nofollow属性以进行链接

时间:2011-05-28 09:01:08

标签: php regex dom

我有一堆带有html的文字。基本上我想要做的是对于本文中找到的所有链接,我想在每个链接中添加一个rel =“noindex”,只有当title属性不存在时才会找到。

例如,如果链接如下所示:

<a href="test.html">test</a>

我希望它看起来像:

<a rel="nofollow" href="test.html">test</a>

但是如果链接看起来像这样:

<a title="test title" href="test.html">test</a>

我不想在其中添加rel =“nofollow”属性。我怎么能在PHP中做到这一点?

修改

对不起,我没有提到这个,但我使用的是PHP4。是的我知道,但我坚持使用PHP4。

2 个答案:

答案 0 :(得分:13)

非常简单地使用DOMDocument

$dom = new DOMDocument;
$dom->loadHTML($yourHTML);

$links = $dom->getElementsByTagName('a');
foreach ($links as $link) {
    if (!$link->hasAttribute('title')) {
        $link->setAttribute('rel', 'nofollow');
    }
}

$yourHTML = $dom->saveHTML();

这比使用正则表达式更加稳定可靠。

答案 1 :(得分:2)

首先使用preg match来获取是否添加了标题。

$str = '<a href="test.html">test</a>';
if(!preg_match('/title=/', $str))
{
    $str = str_replace('href=', 'rel="nofollow" href=', $str);
}