@cema93
WordPress разработчик

Как изменить анкор ссылки в php DOM?

Добрый день!
Возникла необходимость в DOMDocument() заменить анкор длинных ссылок, как как это делает VK. часть ссылки(домен и первые 5 символов) остается, а остальная часть скрывается тремя точками.
Подскажите, как такое реализовать?
  • Вопрос задан
  • 260 просмотров
Решения вопроса 1
t1gor
@t1gor
Web developer
Ну вот как-то так:

/**
 * @link http://php.net/manual/ru/domelement.getattribute.php
 * @link http://php.net/manual/ru/domdocument.getelementsbytagname.php
 */
$html = <<< HTML
<html>
    <body>
        <a href='https://laravel-tricks.com/tricks/using-51-authorization-without-models'>Laravel Tricks</a>
        <a href='https://www.example.com/some/very/very/very/very/very/very/very/very/long-link.html'>Long link</a>
        <a href='http://ya.ru'>yandex</a>
    </body>
</html>
HTML;

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

foreach ($dom->getElementsByTagName('a') as $link) {
    if (strlen($link->getAttribute('href')) >= 5) {
        // $link->setAttribute('href', '#replaced');
        $link->nodeValue = substr($link->getAttribute('href'), 0, 5) . '...';
    }
}

echo $dom->saveHTML();


P.S. Так как не очень понятно, что именно вы хотите сделать, я добавил 2 варианта: замена самой ссылки и замена текста ссылки.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы