Non è difficile.
L'ultima pagina la ricavi con la funzione CEIL, suppongo!
Tu sai qual'è la pagina corrente (prelevata via $_GET) e quella finale.
Codice PHP:
$pag = $_GET['pag'];
$prev = $pag - 1;
$succ = $pag + 1;
$ini = 1;
$ini2 = 2;
$center_left1 = $pag - 1;
$center_left2 = $center_left1 - 1;
$center_right1 = $pag + 1;
$center_right2 = $center_right1 + 1;
$end = xxx; // questo lo calcoli suppongo con il CEIL applicato
// al numero di risultati diviso il numero di righi per pagina
$end2 = $end - 1;
$menu = "
<a href =\\"pagina.php?pag=$prev\\">Precedente</a>
<a href =\\"pagina.php?pag=$ini\\">$ini</a>
<a href =\\"pagina.php?pag=$ini2\\">$ini2</a>
[....]
<a href =\\"pagina.php?pag=$center_left2\\">$center_left2</a>
<a href =\\"pagina.php?pag=$center_left1\\">$center_left1</a>
$pag
<a href =\\"pagina.php?pag=$center_right1\\">$center_right1</a>
<a href =\\"pagina.php?pag=$center_right2\\">$center_right2</a>
[....]
<a href =\\"pagina.php?pag=$end2\\">$end2</a>
<a href =\\"pagina.php?pag=$end\\">$end</a>
<a href =\\"pagina.php?pag=$succ\\">Successivo</a>
";
Naturalmente puoi automatizzare la procedura in una funzione o simili, ma questo è (a mio avviso) un buon esempio di script.