$count_entrys = 148; // количество записей
$entry_on_page = 15; // количество записей на странице
$current_page = 5; // текущая страница
$max_pages_list = 5; // сколько номеров страниц показывать
$count_pages = ceil($count_entrys / $entry_on_page);
$from = $current_page + ceil(($max_pages_list-1) / 2);
$to = $current_page + floor(($max_pages_list-1) / 2);
echo «some link for previos page $current_page-1»;
for($i = $from; $i <= $to; $i++ ) {
echo «somelink for page number $i»;
}
echo «some link for next page $current_page+1»;
соответственно добавить проверки на существование предыдущей и следующий страницы тут думаю понятно.
А вообще странный вопрос для хабра, тут делать нечего алгоритма то по сути нет все элементарно и просто. Да и к тому же вы даже не описали как он работать должен и стрелочки по бокам куда ведут.