Ну вот
как-то так:
/**
* @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 варианта: замена самой ссылки и замена текста ссылки.