Как проставлять аттрибут rel="nofollow" для всех ссылок в описании?(Yii2)

И можно ли добиться такого эффекта штатными методами фреймворка Yii2? В HTMLPurifer, UrlHelper, увы, не нашел нужной опции.

введите сюда описание изображения

UPD: Так выглядит getter для вывод указанного момента сейчас. Всвойстве $description хранится HTML-контент, который очищает от потенциального вредоносного кода HTMLPurifier:

public function getDescription()
{
    return HtmlPurifier::process($this->description);
}

Ответы (2 шт):

Автор решения: Haku Kimura

Для этого вы можете воспользоваться функцией str_replace():

$description = str_replace('a href=', 'a rel="nofollow" href=', $this->description);
return HtmlPurifier::process($description);

либо воспользоваться функцией preg_replace() для замены по регулярному выражению:

$description = preg_replace('/a\s+href="([\w\-.\/:]+)"/iu', 'a href="$1" rel="nofollow"', $this->description);
return HtmlPurifier::process($description);

но первый вариант будет работать быстрее.

→ Ссылка
Автор решения: Starik

Этого можно добиться через штатный конфиг HtmlPurifier так:

public function getDescription()
{
    return HtmlPurifier::process($this->description, function (\HTMLPurifier_Config $config) {
        $config->set('HTML.Nofollow', true);
    });
}

или так:

public function getDescription()
{
    $config = \HTMLPurifier_Config::createDefault();
    $config->set('HTML.Nofollow', true);

    return HtmlPurifier::process($this->description, $config);
}

Как вам больше нравится оформление кода.

Тут можно найти описание этого и других параметров конфигурации HtmlPurifier.

→ Ссылка