php实现长文本分页

<?php
header('content-type:text/html;charset=utf-8');
/**
 * 实现文本分页
 */
//定义一个处理文本的函数,防止文本乱码
/**
 * @param $str
 * @param $start
 * @param $length
 * @return string  返回字符串
 */
function msubstr($str,$start,$length){

    $str = str_replace(chr(10),'<br/>',$str);
//    echo $str;
    $allLength = $start + $length; //总字符串长度
    $tmpstr    = ''; //定义空字符串
    for ($i=0;$i<$allLength;$i++){ //x循环遍历字符
        if (ord(substr($str,$i,1)==0x0a)){ //判断是否是换行
            $tmpstr .= '<br/>';
        }
        if (ord(substr($str,$i,1))>0xa0){   //ascii码的值为0xa0时表示汉字开始
            $tmpstr .= substr($str,$i,2);   //每次截取两个字符
            $i++;                                 //            长度加1
        }else{
            $tmpstr .= substr($str,$i,1);   //截取一个字符
        }
    }
    return $tmpstr;
}
//定义函数转义特殊的html字符
function unhtml($text){
    $content = htmlspecialchars($text); //转换成html实体
    return $content;
}
//实现分页

$text = file_get_contents('./example.txt'); //引入外部文件
$strlen = strlen(unhtml($text)); //获取字符串长度
$length = 1500;                  //定义每页显示长度字符
$totalpage = ceil($strlen/$length); //总页数
$page = isset($_GET['page'])?$_GET['page']:1; //获取页数
$str = msubstr($text,0,($page-1)*$length);  //上一页
$str1 = msubstr($text,0,$page*$length); //当前页
$s = substr($str1,strlen($str),strlen($str1)-strlen($str));
$nextp = $page+1>$totalpage?$page:$page+1;//下一页
$prevp = $page-1<=0?$page:$page-1;//上一页
$firstp = $page=1;//首页
$lastp = $page=$totalpage;//尾页
?>
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        body,h1{
            margin: 0;
            padding:0;
            background-color: #f1f1f1;
        }
        .wamp{
            width: 800px;
            height: 700px;
            margin: 0 auto;
        }
        .header{
            width: 100%;
            height: 50px;
            background-color: #f0c040;
        }
        .content{
            width: 100%;
            height: 500px;
            background-color: #fff;
        }
        .nav{
            width: 100%;
            height: 100px;
            background-color: chocolate;
            text-align: center;
            line-height: 100px;
        }
        .footer{
            width: 100%;
            height: 50px;
            background-color: cadetblue;
        }
        h1{
            line-height: 50px;
            text-align: center;
            background-color: #f0c040;
        }
    </style>
</head>
<body>
<div class="wamp">
    <div class="header">
        <h1>php实现长文本分页</h1>
    </div>
    <div class="content">
        <?php echo $s;  ?>
    </div>
    <div class="nav">
        <span><?php echo '第'.$_GET['page'].'/'.$totalpage.'页';?></span>
        <a href="?page=<?php echo $firstp;?>">首页</a>
        <a href="?page=<?php echo $prevp;?>">上一页</a>
        <a href="?page=<?php echo $nextp;?>">下一页</a>
        <a href="?page=<?php echo $lastp;?>">尾页</a>
    </div>
    <div class="footer"></div>
</div>
</body>
</html>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值