Il faut dans ce cas définir les limites début et fin de ta boucle for dynamiquement.
Tu as défini un maximum de 5 pages avant la page affichée et un maxi de 5 pages après.
Définis deux variables : $d (début) et $f (fin)
À priori, $d sera égal à $page -5 : sauf que, si $page - 5 est inférieur à 1, dans ce cas, $d doit être égal à 1;
Même raisonnement pour $f : $f doit être égal à $page + 5 sauf que si ($page + 5) est supérieur à $nb_pages, alors $f vaudra nb_pages.
Et là, tu modifie ta boucle for :
au lieu de $i = 1, tu ais $i = $d;
au lieu de $i <= $nb_pages, tu mets $i <= $f;
Et le tour est joué

Il faut dans ce cas définir les limites début et fin de ta boucle for dynamiquement.
Tu as défini un maximum de 5 pages avant la page affichée et un maxi de 5 pages après.
Définis deux variables : $d (début) et $f (fin)
À priori, $d sera égal à $page -5 : sauf que, si $page - 5 est inférieur à 1, dans ce cas, $d doit être égal à 1;
Même raisonnement pour $f : $f doit être égal à $page + 5 sauf que si ($page + 5) est supérieur à $nb_pages, alors $f vaudra nb_pages.
Et là, tu modifie ta boucle for :
au lieu de $i = 1, tu ais $i = $d;
au lieu de $i <= $nb_pages, tu mets $i <= $f;
Et le tour est joué ;)