Добавьте атрибут nofollow для ссылки, если тег заголовка отсутствует при использовании PHP - PullRequest
2 голосов
/ 28 мая 2011

У меня есть куча текста с 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?

EDIT:

Извините, я не упомянул об этом, но я использую PHP4. Да, я знаю, но я застрял с PHP4.

Ответы [ 2 ]

13 голосов
/ 28 мая 2011

Очень просто с 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();

Это гораздо более стабильно и надежно, чем копаться в регулярных выражениях.

2 голосов
/ 28 мая 2011

Сначала используйте preg match, чтобы получить, если заголовок добавлен.

$str = '<a href="test.html">test</a>';
if(!preg_match('/title=/', $str))
{
    $str = str_replace('href=', 'rel="nofollow" href=', $str);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...