mRWiNeT, https://github.com/Kilte/pagination
Выкачиваешь последнюю версию
Подключаешь класс, и пишешь примерно следующее:
Спойлер (+/-)
use Kilte\Pagination\Pagination;
$smiles = [/*Здесь твои смайлы*/];
$totalItems = count($smiles);
$currentPage = (int) $_GET['page']; // Номер текущей страницы
$itemsPerPage = 10; // Кол-во смайлов на странице
$neighbours = 4; // Кол-во страниц между первой и текущей страницей.
$pagination = new Pagination($totalItems, $currentPage, $itemsPerPage, $neighbours);
$offset = $pagination->offset();
$limit = $pagination->limit();
$listing = $someInstance->listing($offset, $limit);
$pages = $pagination->build(); // Получаем хэш со страницами для рендера.
/*
array(
1 => 'first',
5 => 'less',
6 => 'previous', // Этот интервал
7 => 'previous', // определяется
8 => 'previous', // аргументом
9 => 'previous', // $neighbours
10 => 'current', // Текущая страница
11 => 'next',
12 => 'next',
13 => 'next',
14 => 'next',
15 => 'more',
20 => 'last'
)
*/С отображением ссылок на страницы думаю не сложно и самому разобраться.