เซียน php ช่วยหน่อยครับเรื่อง Page ที่แสดงครับ

<?php if ($p > 1) echo('[) ? '&search='.urlencode($_GET['search']) : '').'"]<< Prev](xxx.php?p='.($p - 1).(!empty($_GET['search')'); ?>
<?php
for ($i = 1; $i<=$ps; $i++) {
	if ($i == $p)
		echo(' [b]['.$i.'][/b] ');
	else
		echo(' [) ? '&search='.urlencode($_GET['search']) : '').'"]'.$i.'](xxx.php?p='.($i).(!empty($_GET['search') ');
}
?>
<?php if ($p < $ps) echo('[) ? '&search='.urlencode($_GET['search']) : '').'"]Next >>](xxx.php?p='.($p + 1).(!empty($_GET['search')'); ?>

ตั้งไว้ให้มันแสดง 100 กระทู้/หน้า

ใช้ Code แบบนี้ในการแสดงหน้าแต่ตอนนี้คิดว่ามันไม่ work แล้วเพราะว่าถ้าหน้ามี 200 หน้า มันก็จะแสดงเลย 1 ถึง 200 เลย อยากให้มันเป็นแบบ 1 … 3 4 [5] 6 7 … 200 อะไรประมาณนี้ต้องทำไงหร่อครับ