<?php
$posts = 1000; // 전체 게시물 개수
$per_page = 20; // 한 페이지 나타낼 게시물 개수
$cur_page = 15; // 현재 선택한 페이지 번호, $_GET['page']
$pps = 10; // 출력할 페이지 번호 개수
// $pps는 짝수이어야 한다.
if ($pps % 2 != 0) $pps++;
// 총 페이지 수
$npages = ($posts / $per_page) + (($posts % $per_page != 0) ? 1 : 0);
// 총 페이지 수가 1이면 적절하게 처리
if ($npages < 2) return;
$page1 = $cur_page - $pps / 2;
$page2 = $cur_page + $pps / 2;
if ($page1 < 1) {
$page2 -= $page1;
$page1 = 1;
}
elseif ($page2 > $npages) {
$page1 -= ($page2 - $npages);
$page2 = $npages;
}
if ($page1 < 1)
$page1 = 1;
if ($page2 > $npages)
$page2 = $npages;
$pageURL = array();
// 처음 페이지 출력
if ($page1 > 1) {
echo "처음 ";
}
// 이전 페이지 출력
if ($cur_page > 1) {
printf("이전 ", $cur_page - 1);
}
for ($i = $page1; $i <= $page2; $i++) {
$pageURL[] = ($i == $cur_page) ? $i : "[$i]";
}
echo implode(' ', $pageURL);
// 다음 페이지 출력
if ($cur_page < $npages) {
printf("다음", $cur_page + 1);
}
// 마지막 페이지 출력
if ($page2 < $npages) {
printf("마지막", $npages);
}
?>