好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php按字数分页 php分页函数封装

很多站长朋友们都不太清楚php按字数分页,今天小编就来给大家整理php按字数分页,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 求一段PHP文章分页代码,按多少字分页,带使用方法,本人新手。求助。 2、 用php怎样完成数字分页 3、 phpcms v9 文章按字数分页,每页显示多少字在哪里修改? 4、 求php数字分页算法 5、 php如何根据内容的大小分页 求一段PHP文章分页代码,按多少字分页,带使用方法,本人新手。求助。

<?php

header('Content-Type:text/html;charset=utf-8');

if(isset($_GET["now_page"]))

{

$now_page = $_GET["now_page"];

$now_page = intval($now_page);

}

if($now_page==""||$now_page<1)

{

$now_page = 1;

}

$info = "存放输出的内容信息1,存放输出的内容信息2,存放输出的内容信息3,存放输出的内容信息4,存放输出的内容信息5.。6sdfkejkfjefjj。";//信息内容

$each_page_save_words_num = 10;//每$each_page_save_words_num个字换页

$count_words = mb_strlen($info,'UTF-8');//字符统计

$count_page = ceil($count_words/$each_page_save_words_num);//总页码

//开始字数:

$start_words = ($now_page-1)*$each_page_save_words_num;

//输出信息:

/*

Utf-8、gb2312都支持的汉字截取函数

cut_str(字符串, 截取长度, 开始长度, 编码);

编码默认为 utf-8

开始长度默认为 0

*/

function cut_str($string,$start = 0, $sublen , $code = 'UTF-8')

{

if($code == 'UTF-8')

{

$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";

preg_match_all($pa, $string, $t_string);

if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen));

return join('', array_slice($t_string[0], $start, $sublen));

}

else

{

$start = $start*2;

$sublen = $sublen*2;

$strlen = strlen($string);

$tmpstr = '';

for($i=0; $i< $strlen; $i++)

{

if($i>=$start $i< ($start+$sublen))

{

if(ord(substr($string, $i, 1))>129)

{

$tmpstr.= substr($string, $i, 2);

}

else

{

$tmpstr.= substr($string, $i, 1);

}

}

if(ord(substr($string, $i, 1))>129) $i++;

}

if(strlen($tmpstr)< $strlen )

{

//$tmpstr.= "...";

}

return $tmpstr;

}

}

//$str = "abcd需要截取的字符串";

//echo cut_str($str, 8, 0, 'gb2312');

$out = cut_str($info,$start_words,$each_page_save_words_num ,'UTF-8');

//输出信息:完毕

echo $out.'<br/>';

//分页处理

$show_page = 5;//显示5个页码

$url = "untitled1.php";//当前的文件名

//$last_page:上一页

//$next_page:下一页

//上一页

if($now_page>1)

{

$last_page = $now_page -1;

}

else

{

$last_page = 1;

}

//下一页

if($now_page<$count_page)

{

$next_page = $now_page +1;

}

else

{

$next_page = $count_page;

}

if($count_page<=$show_page)

{

$start = 1;

$end = $count_page;

}

else

{

if($now_page<=($show_page+1)/2)

{

$start = 1;

$end = $show_page;

}

else if($now_page>($count_page-($show_page+1)/2))

{

$start = $count_page - $show_page+1;

$end = $count_page;

}

else

{

$start = $now_page - ($show_page-1)/2;

$end = $now_page + ($show_page-1)/2;

}

}

$page = "<a href='".$url."?now_page=1'>首页</a> ";

$page .= "<a href='".$url."?now_page=".$last_page."'>上一页</a> ";

//echo $start.'<br/>';

//echo $end.'<br/>';

for($i=$start;$i<=$end;$i++)

{

if($i==$now_page)

{

$page .= "<a style=\"color:#ff0000;\" href='".$url."?now_page=".$i."'>".$i."</a> ";//当前页颜色变红

}

else

{

$page .= "<a href='".$url."?now_page=".$i."'>".$i."</a> ";

}

//echo $page.'<br/>';

}

$page .= "<a href='".$url."?now_page=".$next_page."'>下一页</a> ";

$page .= "<a href='".$url."?now_page=1".$count_page."'>尾页</a> ";

echo $page;

?>

用php怎样完成数字分页

你首先你要查询你总条数 total

你要设定一个变量 num 作为每页的数量

用total除以num 如果整除则为这个数组 如果有余则为这个数+1

然后确定当前第几页 limit  页数*num , num

将页数总数返回到前端

前端接接受到这个页数后 for一个a标签

phpcms v9 文章按字数分页,每页显示多少字在哪里修改?

编辑文章最下方的“分页方式”,选“自动分页”,再输入分页字符数。

求php数字分页算法

假设。

你只需要显示当前页数的前3页和后3页。

呐么只有3种可能。

第一个可能,用户当前点击的页数未超过前3页。需要显示前7页(前三页和后三页以及当前点击的页)省略7页后面的页。

第二个可能,用户点击的页数以超过前三页可是未到尾三页。那么就要省略当前页数的前三页后三页之外的所有页码。

第三个可能,用户点击的页数以超过尾三页。那么就省略最后7页外的所有页码。

这是我写的分页码中算省略页码的代码。

$fornum = 10; //先声明你要显示的是几个页。

if($totalpage > $fornum) //判断当前的所有页数是否超过你要显示的页。如果没超过。那就不用费事直接显示所有页码就行叻。 如果超过进入循环。

{

//第一种可能。我这个是只显示10个页码。

if($page<=6) //如果当前的页码大于等于6.也就是前面的页码不用省略。直接省略10个页码之后的页就OK叻。

{

for($i=1; $i <= $fornum; $i++)//这就是循环显示数字页码

{

if($page == $i ){

echo '<a href="javascript:;" class="on">'.$i.'</a>';

}

else{

echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'" class="num">'.$i.'</a>';

}

}

echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$totalpage.'" class="num">...'.$totalpage.'</a>';

}

//注意阿。这不是第二个可能。这是第三个可能。因为第一个和第三个好判断。而两个都不满足呐就是第二个可能叻。所以第二个不用判断。这个条件也很好解释。总的页数减去当前页数小于等于5的话。那么就省略最后10页以外的页码。

elseif(($totalpage-$page) <= 5)

{

echo '<a href="'.$_SERVER['PHP_SELF'].'?page=1" class="num">1...</a>';

for($i=$totalpage - ($fornum -1); $i <= $totalpage; $i++)//依旧是循环显示数字页码

{

if($page == $i ){

echo '<a href="javascript:;" class="on">'.$i.'</a>';

}

else{

echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'" class="num">'.$i.'</a>';

}

}

}

//这就是第二个可能叻。第一和第三的条件都不满足那么只有前没到头后没着尾的情况叻。所以不用判断直接显示当前页数的前几页和后几页。头尾都省略。

else

{

echo '<a href="'.$_SERVER['PHP_SELF'].'?page=1" class="num">1...</a>';

for($i=$page - 4; $i < $page + 5; $i++)//循环显示数字页码

{

if($page == $i ){

echo '<a href="javascript:;" class="on">'.$i.'</a>';

}

else{

echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'" class="num">'.$i.'</a>';

}

}

echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$totalpage.'" class="num">...'.$totalpage.'</a>';

}

}

//这是最上面的那个if的,如果总页码没超过你要显示的页码就直接显示所有的页码~

else

{

for($i=1; $i <= $totalpage; $i++)//仍是循环显示数字页码

{

if($page == $i ){

echo '<a href="javascript:;" class="on">'.$i.'</a>';

}

else{

echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'" class="num">'.$i.'</a>';

}

}

}

然后就木有叻。首页尾页上页下页的代码我就不粘叻。 关于显示固定页码的代码就是这些。希望你能看懂。打的我手都酸了。。。

php如何根据内容的大小分页

分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一。对于web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,因此特地撰写此文对这个问题进行详细的讲解,力求让看完这篇文章的朋友在看完以后对于分页显示的原理和实现方法有所了解。本文适合初学者阅读,所有示例代码均使用php编写。

我以前在达内上课的时候,做过很多案例,这是基本的教材 ,很多问题在网上运气好能得到接到,我觉得你有个系统的培训会比较好,规范自己的学习进程和代码。

原理

所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:

每页多少条记录($PageSize)?

当前是第几页($CurrentPageID)?

现在只要再给我一个结果集,我就可以显示某段特定的结果出来。

至于其他的参数,比如:上一页($PreviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。

以mysql数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。

前10条记录:select * from table limit 0,10

第11至20条记录:select * from table limit 10,10

第21至30条记录:select * from table limit 20,10

……

这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:

select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize

拿这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。以下我将用具体代码加以说明。

3、简单代码

请详细阅读以下代码,自己调试运行一次,最好把它修改一次,加上自己的功能,比如搜索等等。

<?php

// 建立数据库连接

$link = mysql_connect("localhost", "mysql_user", "mysql_password")

or die("Could not connect: " . mysql_error());

// 获取当前页数

if( isset($_GET['page']) ){

$page = intval( $_GET['page'] );

}

else{

$page = 1;

}

// 每页数量

$PageSize = 10;

// 获取总数据量

$sql = "select count(*) as amount from table";

$result = mysql_query($sql);

$row = mysql_fetch_row($result);

$amount = $row['amount'];

// 记算总共有多少页

if( $amount ){

if( $amount < $page_size ){ $page_count = 1; } //如果总数据量小于$PageSize,那么只有一页

if( $amount % $page_size ){ //取总数据量除以每页数的余数

$page_count = (int)($amount / $page_size) + 1; //如果有余数,则页数等于总数据量除以每页数的结果取整再加一

}else{

$page_count = $amount / $page_size; //如果没有余数,则页数等于总数据量除以每页数的结果

}

}

else{

$page_count = 0;

}

// 翻页链接

$page_string = '';

if( $page == 1 ){

$page_string .= '第一页|上一页|';

}

else{

$page_string .= '<a href="/?page=1>";第一页</a>|<a href="/?page='."($page-1).'>上一页</a>|';

}

if( ($page == $page_count) || ($page_count == 0) ){

$page_string .= '下一页|尾页';

}

else{

$page_string .= '<a href="/?page='."($page+1).'>下一页</a>|<a href="/?page='."$page_count.'>尾页</a>';

}

// 获取数据,以二维数组格式返回结果

if( $amount ){

$sql = "select * from table order by id desc limit ". ($page-1)*$page_size .", $page_size";

$result = mysql_query($sql);

while ( $row = mysql_fetch_row($result) ){

$rowset[] = $row;

}

}else{

$rowset = array();

}

// 没有包含显示结果的代码,那不在讨论范围,只要用foreach就可以很简单的用得到的二维数组来显示结果

?>

4、OO风格代码

以下代码中的数据库连接是使用的pear db类进行处理

<?php

// FileName: Pager.class.php

// 分页类,这个类仅仅用于处理数据结构,不负责处理显示的工作

Class Pager

{

var $PageSize; //每页的数量

var $CurrentPageID; //当前的页数

var $NextPageID; //下一页

var $PreviousPageID; //上一页

var $numPages; //总页数

var $numItems; //总记录数

var $isFirstPage; //是否第一页

var $isLastPage; //是否最后一页

var $sql; //sql查询语句

function Pager($option)

{

global $db;

$this->_setOptions($option);

// 总条数

if ( !isset($this->numItems) )

{

$res = $db->query($this->sql);

$this->numItems = $res->numRows();

}

// 总页数

if ( $this->numItems > 0 )

{

if ( $this->numItems < $this->PageSize ){ $this->numPages = 1; }

if ( $this->numItems % $this->PageSize )

{

$this->numPages= (int)($this->numItems / $this->PageSize) + 1;

}

else

{

$this->numPages = $this->numItems / $this->PageSize;

}

}

else

{

$this->numPages = 0;

}

switch ( $this->CurrentPageID )

{

case $this->numPages == 1:

$this->isFirstPage = true;

$this->isLastPage = true;

break;

case 1:

$this->isFirstPage = true;

$this->isLastPage = false;

break;

case $this->numPages:

$this->isFirstPage = false;

$this->isLastPage = true;

break;

default:

$this->isFirstPage = false;

$this->isLastPage = false;

}

if ( $this->numPages > 1 )

{

if ( !$this->isLastPage ) { $this->NextPageID = $this->CurrentPageID + 1; }

if ( !$this->isFirstPage ) { $this->PreviousPageID = $this->CurrentPageID - 1; }

}

return true;

}

/***

*

* 返回结果集的数据库连接

* 在结果集比较大的时候可以直接使用这个方法获得数据库连接,然后在类之外遍历,这样开销较小

* 如果结果集不是很大,可以直接使用getPageData的方式获取二维数组格式的结果

* getPageData方法也是调用本方法来获取结果的

*

***/

function getDataLink()

{

if ( $this->numItems )

{

global $db;

$PageID = $this->CurrentPageID;

$from = ($PageID - 1)*$this->PageSize;

$count = $this->PageSize;

$link = $db->limitQuery($this->sql, $from, $count); //使用Pear DB::limitQuery方法保证数据库兼容性

return $link;

}

else

{

return false;

}

}

/***

*

* 以二维数组的格式返回结果集

*

***/

function getPageData()

{

if ( $this->numItems )

{

if ( $res = $this->getDataLink() )

{

if ( $res->numRows() )

{

while ( $row = $res->fetchRow() )

{

$result[] = $row;

}

}

else

{

$result = array();

}

return $result;

}

else

{

return false;

}

}

else

{

return false;

}

}

function _setOptions($option)

{

$allow_options = array(

'PageSize',

'CurrentPageID',

'sql',

'numItems'

);

foreach ( $option as $key => $value )

{

if ( in_array($key, $allow_options) ($value != null) )

{

$this->$key = $value;

}

}

return true;

}

}

?>

<?php

// FileName: test_pager.php

// 这是一段简单的示例代码,前边省略了使用pear db类建立数据库连接的代码

require "Pager.class.php";

if ( isset($_GET['page']) )

{

$page = (int)$_GET['page'];

}

else

{

$page = 1;

}

$sql = "select * from table order by id";

$pager_option = array(

"sql" => $sql,

"PageSize" => 10,

"CurrentPageID" => $page

);

if ( isset($_GET['numItems']) )

{

$pager_option['numItems'] = (int)$_GET['numItems'];

}

$pager = @new Pager($pager_option);

$data = $pager->getPageData();

if ( $pager->isFirstPage )

{

$turnover = "首页|上一页|";

}

else

{

$turnover = "<a href='?page=1numItems=".$pager->numItems."'>首页</a>|<a href="/?page=".$pager->PreviousPageID."numItems=".$pager->numItems."'>上一页</a>|";

}

if ( $pager->isLastPage )

{

$turnover .= "下一页|尾页";

}

else

{

$turnover .= "<a href="/?page=".$pager->NextPageID."numItems=".$pager->numItems."'>下一页</a>|<a href="/?page=".$pager->numPages."numItems=".$pager->numItems."'>尾页</a>";

}

?>

需要说明的地方就是不同数据库的兼容性,在不同的数据库里截获一段结果的写法是不一样的。

mysql: select * from table limit offset, rows

pgsql: select * from table limit m offset n

......

所以要在类里边获取结果的时候需要使用pear db类的limitQuery方法。

ok,写完收功,希望花时间看完这些文字的你不觉得是浪费了时间。

回答者

关于php按字数分页的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php按字数分页 php分页函数封装的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did195570
更新时间:2023-04-26   阅读:20次

上一篇: 泛微php开发工程师 泛微开发面试题

下一篇:php网站培训 php培训技术

最新资料更新

  • 1.php怎么登录会员 怎么用php完成登录页面
  • 2.php生成uuid php生成随机6位数
  • 3.php中序递归 php递归算法1加到100
  • 4.php根据城市定位 php获取位置信息
  • 5.php加密12进 php加密解密
  • 6.php人员查询系统 php信息查询系统
  • 7.php网站依赖 php运行网址
  • 8.phpdelete的简单介绍
  • 9.中南php哪家好 中南cp
  • 10.php解压gz效率 rarphp文件怎么解压
  • 11.php大数据算法 php如何处理大数据
  • 12.php获取网页乱码 php网页显示乱码
  • 13.接口的继承php 接口的继承和实现
  • 14.php实例上传txt代码的简单介绍
  • 15.phpword导出 phpspreadsheet导出
  • 16.php实现权限分配 php权限设计
  • 17.php网页滚动代码 php 如何做滑动加载
  • 18.php编程实验总结 php简单实训项目
  • 19.PHP添加日期代码 php年月日时间代码
  • 20.腾讯php招聘 招聘 腾讯

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]