You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP分页如何仅显示前3页、后3页并省略中间多余页码

解决方法

你当前的问题是分页循环遍历了所有页码,只需要替换前端分页代码中for循环的部分即可实现带省略号的折叠效果,修改后的完整分页前端代码如下:

<ul class="pagination justify-content-end">
   <li class="page-item <?php if($page <= 1){ echo 'disabled'; } ?>">
      <a class="page-link" href="<?php if($page <= 1){ echo '#'; } else { echo "?page=" . $prev; } ?>">上一页</a>
   </li>
   
   <?php
   // 配置当前页前后展示的相邻页码数量
   $adjacent = 2;
   // 总页数小于等于10页时直接全展示
   if($totoalPages <= 10):
      for($i = 1; $i <= $totoalPages; $i++ ):
   ?>
   <li class="page-item <?php if($page == $i) {echo 'active'; } ?>">
      <a class="page-link" href="posts.php?page=<?php echo $i; ?>"> <?php echo $i; ?> </a>
   </li>
   <?php
      endfor;
   else:
      // 展示前3页
      for($i = 1; $i <= 3; $i++):
   ?>
   <li class="page-item <?php if($page == $i) {echo 'active'; } ?>">
      <a class="page-link" href="posts.php?page=<?php echo $i; ?>"> <?php echo $i; ?> </a>
   </li>
   <?php
      endfor;
      // 当前页距离前三页较远时展示省略号
      if($page > $adjacent + 3):
   ?>
   <li class="page-item disabled"><span class="page-link">...</span></li>
   <?php
      endif;
      // 展示当前页前后的相邻页码
      for($i = max(4, $page - $adjacent); $i <= min($totoalPages - 2, $page + $adjacent); $i++):
   ?>
   <li class="page-item <?php if($page == $i) {echo 'active'; } ?>">
      <a class="page-link" href="posts.php?page=<?php echo $i; ?>"> <?php echo $i; ?> </a>
   </li>
   <?php
      endfor;
      // 当前页距离最后两页较远时展示省略号
      if($page < $totoalPages - $adjacent - 2):
   ?>
   <li class="page-item disabled"><span class="page-link">...</span></li>
   <?php
      endif;
      // 展示最后2页
      for($i = $totoalPages - 1; $i <= $totoalPages; $i++):
   ?>
   <li class="page-item <?php if($page == $i) {echo 'active'; } ?>">
      <a class="page-link" href="posts.php?page=<?php echo $i; ?>"> <?php echo $i; ?> </a>
   </li>
   <?php
      endfor;
   endif;
   ?>
   
   <li class="page-item <?php if($page >= $totoalPages) { echo 'disabled'; } ?>">
      <a class="page-link" href="<?php if($page >= $totoalPages){ echo '#'; } else {echo "?page=". $next; } ?>">下一页</a>
   </li>
</ul>

如果你需要调整展示的相邻页码数量,修改$adjacent参数的数值即可。

内容的提问来源于stack exchange,提问作者Backlink TR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:45:01