■
http://q.hatena.ne.jp/1190099081
解答開かれずに終わっちゃったけど、恥ずかしいコードだったので書き直し。
$page = 7 ; // 表示するページ $length = 51 ; // 全体のページ数 $range = 4 ; // 前後の表示範囲 $result = '' ; if ($length > 0) { $page = ($page < 1 ? 1 : ($page > $length ? $length : $page)) ; for ($i = 1; $i <= $length; ++$i) { $result .= $i ; // リンク文字列等に置き換える if ($i == 1 && ($page - $range) > 2 && ($length - 2 * $range > 2)) { $i = $page - $range - 1; if ($i > $length - 2 * $range-1) $i = $length - 2 * $range - 1 ; $result .= (1 < $i ? ' ... ' : '') ; } elseif (($i < $length - 1) && (($i == $range * 2 + 1 && $i > $page + $range) || ($i == $page + $range && $i > $range * 2 && $i != $length))) { $i = $length - 1 ; $result .= ($i < $length ? ' ... ' : '') ; } elseif ($i < $length) $result .= '|' ; } } echo $result ;