'; $halfPages = floor($numberOfPages / 2); $range = array('start' => 1, 'end' => $totalPages); $isEven = ($numberOfPages % 2 == 0); $atRangeEnd = $totalPages - $halfPages; if($isEven) $atRangeEnd++; if($totalPages > $numberOfPages) { if($page <= $halfPages) $range['end'] = $numberOfPages; elseif ($page >= $atRangeEnd) $range['start'] = $totalPages - $numberOfPages + 1; else { $range['start'] = $page - $halfPages; $range['end'] = $page + $halfPages; if($isEven) $range['end']--; } } if($page > 1) echo '« '; for ($i = $range['start']; $i <= $range['end']; $i++) { if($i == $page) echo ''.$i.' '; else echo ''.$i.' '; } if ($page < $totalPages) echo '» '; ?>