Intanto dipende come vuoi realizzare i gruppi e cosa succede cliccando sui "..."... ti faccio un'ipotesi... supponiamo tu abbia un vettore con l'elenco dei link tipo:
Codice PHP:
$pagine = array(
1 => '.../.../...',
2 => '.../.../...',
);
dove la chiave è il numero di pagina e il valore è il link.
Inoltre sia $pag la pagina attualmente visualizzata.
Potresti avere:
Codice PHP:
$pag_ini = 1; // prima pagina
$pag_fin = sizeof($pagine); // ultima pagina
$pag = ... ; // pagina attuale
$num_pag_da_visualizzare = 6;
$pag_sx = max(1, $pag-($num_pag_da_visualizzare/2));
$pag_dx = min($pag_sx+$num_pag_da_visualizzare, $pag_fin);
// ... ora mostri solo da $pag_sx a $pag_dx, inolte puoi linkare i "..." a sinistra con max(1, $pag_sx-$num_pag_da_visualizzare) e quelli a destra con min($pag_dx+1, $pag_fin) facendo sempre dei controlli per le "estremità"...
Naturalmente $pag e $pagine saranno costruiti dinamicamente in qualche modo... inoltre se $num_pag_da_visualizzare è dispari aggiungi un controllo dove si divide per 2. Aggiungi anche dei controlli se ci sono pochi link (sotto il numero minimo non fai alcuna azione).